struts2 常用标签

作者在 2010-05-09 10:19:56 发布以下内容

Struts 1.xStruts 2.0的标志库(Tag Library)作比较

要在JSP中使用Struts1标签,需要先指明标签的引入:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

……

 

要在JSP中使用Struts2标签,需要先指明标签的引入:

<%@ taglib prefix=”s” uri=”/struts-tags”%>

UI标签、UI标签(基于表单的UI标签和其他UI标签)

 

 

1、  UI标签

1)、if\elseifelse

执行基本的条件流转

例子:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<title>Condition Flow</title>
    
</head>
    
<body>
        
<h3>Condition Flow</h3>            
              
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>
" />
        
<s:if test="#name == 'Max'">

            Max's file here
        
</s:if>
        
<s:elseif test="#name == 'Scott'">
            Scott's file here
        
</s:elseif>
        
<s:else>
            Other's file here
        
</s:else>        
    
</body>

</html>

  <!--
            
这里有点小技巧:
            
本来可以用#parameters.name[0]来获得,请求中name的值。但是,在我实现include例子时,
            
无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#parameters.name也为空值。
            
            
其原因为:
            
当使用include标志时,被包含的页面(included)里#parameters拿到的是包含页面里的请求参数。
            
            
因此,这里必须手工调用request.getParameter("name")
        -->


 

2)、iterator

用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator

例子:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
    List list = 
new ArrayList();
    list.add("Max");
    list.add("Scott");
    list.add("Jeffry");
    list.add("Joe");
    list.add("Kelvin");
    request.setAttribute("names", list);
%>

<html>
    
<head>
        
<title>Iterator</title>
    
</head>
    
<body>
        
<h3>Names: </h3>
               
<ol>
            
<s:iterator value="#request.names" status="stuts">                
                
<s:if test="#stuts.odd == true">

                    
<li>White <s:property /></li>
                
</s:if>
                
<s:else>
                    
<li style="background-color:gray"><s:property /></li>
                
</s:else>
            
</s:iterator>
        
</ol>
    
</body>
</html>

 <!-- 
            1
、此处的空property元素用于获得当前iterator的值 
            2
status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。IteratorStatus类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。
        -->


 

3)、i18n

加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息,而不只当前action相关联的资源包

例子:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<title>Internationization</title>
    
</head>
    
<body>
        
<h3>
            
<s:i18n name="ApplicationMessages">
                
<s:text name="HelloWorld" />
            
</s:i18n>
        
</h3>
    
</body>
</html>

 

4)、include

包含一个servlet的输出(servletjsp的页面)

例子:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<title>Iterator</title>
    
</head>
    
<body>
        
<h3>Interator Page</h3>
        
<s:include value="/condition.jsp">
            
<s:param name="name">Max</s:param>
        
</s:include>
        
<h3>i18n</h3>
        
<s:include value="/i18n.jsp" />
    
</body>
</html>

 

5)、param

为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(TextTag)

value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:

<param name="color">blue</param>

默认分类 | 阅读 801 次
文章评论,共0条
游客请输入验证码