一、
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

jsp
页面的时候,在
struts2
中,用的是
s
标记,先引入标记:

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

二、

struts2
的标签和
1
是完全不同的。

struts2
的标签分为两大类:非
UI
标志和
UI
标志
struts1
将标志库按功能分成
HTML
Tiles
Logic
Bean
等几部分

下面就介绍
strut2
的具体标签:

1
UI

UI
标志又可以分为表单
UI
和非表单
UI
两部分。表单
UI
部分基本与
Struts 1.x
相同,都是对
HTML
表单元素的包装。不过,
Struts 2.0
加了几个我们经常在项目中用到的控件如:
datepicker
doubleselect
timepicker
optiontransferselect
等。因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。

下面主要是
ui
标签的一些用法

form:

<s:form action="exampleSubmit" method="post" enctype="multipart/form-data">

<s:submit />

    <s:reset />

 

</s:form>
可以上传文件的
form

textfield

<s:textfield

            label="
姓名:
"

            name="name"

            tooltip="Enter your Name here" />

datepicker

<s:datepicker

            tooltip="Select Your Birthday"

            label="
生日
"

            name="birthday" />

textarea

<s:textarea

            tooltip="Enter your remart"

            label="
备注
"

            name="remart"

            cols="20"

            rows="3"/>

select:

<s:select

            tooltip="Choose user_type"

            label=""

            list="#{'free':'
免费
','vip':'
收费
'}" value="#{'free':'
免费
'}"  

           name="bean.user_type"

            emptyOption="true"

            headerKey="None"

            headerValue="None"/>

<s:select

            tooltip="Choose user_type"

            label=""

            list="#{'free':'
免费
','vip':'
收费
'}" value="#{'free':'
免费
'}"  

           name="bean.user_type"

            emptyOption="true"

            headerKey="None"

            headerValue="None"/>

<s:select

list="venderList"

listKey="id"

listValue="name"

value="%{profile.companyName}"

name="companyName" cssClass="sel_style_w_180"/>  

挺好用的

checkboxlist

<s:checkboxlist

            tooltip="Choose your Friends"

            label="
朋友
"

            list="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"

            name="friends"/>

checkbox

   <s:checkbox

            tooltip="Confirmed that your are Over 18"

            label="
年龄
"

            name="legalAge"

            value="18"/>

file:

   <s:file

            tooltip="Upload Your Picture"

            label="Picture"

            name="picture" />

a:

<s:a href="getP.jsp">
超链接提交
</s:a>

date :

<s:date name="ad_end_time" format="yyyy-MM-dd"/>

 

radio :(
默认选择男
)

 

<s:set name="Global" value="%{getText('Erp.Common.UserManagement.Label.Member.Regular')}"/>

 

<s:radio name="user.sex" list="#{#Global:'
',1:'
'}" listKey="key" listValue="value" value="'0'"></s:radio>

 

 

2
、非
UI

if
elseif
else
描述:

执行基本的条件流转。

参数:

名称必需默认类型描述备注
test
Boolean
决定标志里内容是否显示的表达式
else
标志没有这个参数
id
Object/String
用来标识元素的
id
。在
UI
和表单中为
HTML
id
属性
例子:

<%@ page c %>

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

<!DOCTYPE HTML PUBLIC "-//W<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <title>Condition Flow</title>

    </head>

    <body>

        <h3>Condition Flow</h3>            

        <!--

           
这里有点小技巧:

           
本来可以用
#parameters.name[0]
来获得,请求中
name
的值。但是,在我实现
include
例子时,

           
无论我用
param
标志给
name
赋任何值,
#parameters
里面不会含有任何值,所以
#parameters.name
也为空值。

            

           
其原因为:

           
当使用
include
标志时,被包含的页面(
included
)里
#parameters
拿到的是包含页面里的请求参数。

            

           
因此,这里必须手工调用
request.getParameter("name")

        -->

    <s:iterator value="linkList" status="bean">

   <tr>

    <td class="data_tab_tdcl">

     <s:property value="#bean.Index+1" />    </td>

    <td class="data_tab_tdcl"><s:property value="link_title" /></td>

    <td class="data_tab_tdcl"><s:property value="link_url" /></td>

    <td class="data_tab_tdcl">

    <s:if test="link_type == 1">

                   
文字

                </s:if>

                <s:elseif test="link_type == 2">

                  
图片

                </s:elseif>

                 <s:else>

                 -----

               </s:else>   

    </td>

 

   

    </body>

</html>

1 condition.jsp

iterator
描述:

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

参数:

名称必需默认类型描述
status
String
如果设置此参数,一个
IteratorStatus
的实例将会压入每个遍历的堆栈
value
Object/String
要遍历的可枚举的(
iteratable
)数据源,或者将放入新列表(
List
)的对象
id
Object/String
用来标识元素的
id
。在
UI
和表单中为
HTML
id
属性
例子:

<%@ page c %>

<%@ 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>

        <!--

            1
、此处的空
property
元素用于获得当前
iterator
的值

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

        -->

        <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
Struts2
页面开发中常用标签使用说明

1.1
.往
action
里传值的使用方式:

<input name="userName" type="text" class="input6" size="15">

a. userName
属性需要在访问的
action
中提供相应的属性,并有
SET/GET
方法。

b.
可以不在访问的
action
中提供相应的属性,用
request.getParameter(
userName
);1.2
.显示标签
property
用于输出指定值:

<s:property value=" userName "/>
action
返回到指定页面是,可以通过该标签显示
action
中的属性信息。(注
userName
必须在
action
中存在,并有
GET
方法)。

 

1.3
.往对象中传值
<s:textfield>
用于从页面往
action
中的对象内传值:

<s:text[color=blue][/color]field name="user. userName " id="username"/>

该标签可以在页面中向
action
中的实体对象内直接传值。(注:在
action
中要存在
user
对象,并有
SET/GET
方法。)

 

1.4
.判断
<s:if> </s:if>
用于在页面中判断指定数据

<s:if test="userName == admin">…. </s:if>

<s:else>…. </s:else>

该标签用于对指定的数据进行判断,但指定的数据必须在
action
中存在。

 

1.5
.迭代
<s:iterator>
用于将
List
Map
ArrayList
等集合进行循环遍历

<s:iterator value="userList" id="user" status="u">

<s:property value="userName"/></a>

</s:iterator>

该标签用于将
userList
集合中的元素进行循环,用过
property
进行显示集合中的指定元素值。

 

1.6
URL
地址标签,
<s:url>
用于生成一个
URL
地址,可以通过
URL
标签指定的
<s:param>
子元素向
URL
地址发送请求参数

<s:url action=" ">

<s:param name=" " value=""></s:param>

</s:url>

其中
action
为请求地址,
param
子元素为地址后面所带的参数。

 

1.7
.超链接
<a href >
一般和
<s:url>
标签一起使用,用于带多个参数。

<a href="

<s:url action=" ">

<s:param name=" " value=""></s:param>

<s:param name=" " value=""></s:param>

<s:param name=" " value=""></s:param>

</s:url>">

超链接
</a>

 

1.8
set
标签,用于将某个值放入指定的范围内。例如
application,session
等。

<s:set name="user" value="userName" scope=”request”/>

user
值放入
request
范围内。

 

2
Struts2
页面开发中常用标签使用规范:

1.1
.通过
<input name="userName" type="text" class=" " size="15">

action
中传值,
action
中要有相应的属性,并提供
SET/GET
方法。

(在数量少时可以使用
request.getParameter(
userName
);

 

1.2
.在页面显示
action
传来的数据,使用
property
标签。需要显示的数据从
action
中获得。

 

1.3
.往
action
中的实体对象内传值,使用
textfield
标签。

 

1.4
.在页面中判断指定值使用
<s:if>
标签。判断数据从
action
中获得。

 

1.5
.在页面中需要循环列表显示的数据使用
<s:iterator>
标签,列表数据从
action
中获得。

 

1.6
URL
地址和超链接可以使用
<a href>
<s:url>
,在传多值时建议
<a href>
<s:url>
一起使用