通用标签的示例
一、示例一:通过<s:property/>获取属性参数
1. 设置属性值
<a href="Test.action?name=zzh">Test </a> <br><br> <% session.setAttribute("date", new Date()); %> |
2. 配置Struts2
<action name="TestServletActionContext" class="zzh.struts2.com.TestServletActionContextAction"> <result >/success.jsp</result> </action> |
3. 输出的jsp
首先导入<%@ taglib prefix="s" uri="/struts-tags" %> |
<s:property value="#session.date"/> <br><br> <s:property value="#parameters.name[0]"/> |
二、其他Struts2的通用标签
1. 通过<s:url>获取属性参数
2. 通过<s:set>向域对象添加属性
3. 通过<s:put>压入弹出
4. 通过<s:if>直接使用值栈中的属性做条件判断
5. iterator
6. sort
7. date
三、示例二、sort
index.jsp |
<a href="mytest">Mytest</a> |
Struts.xml |
<action name="mytest" class="zzh.struts2.com.MytestMethos" method="Mytest"> <result>/mysuccess.jsp</result> </action> |
MytestMethod |
publicclass MytestMethos {
private List<Person> persons = new ArrayList<Person>(); public List<Person> getPersons() { return persons; }关键代码,切记 public String Mytest() { persons.add(new Person("DD",55)); persons.add(new Person("AA",22)); persons.add(new Person("CC",44)); persons.add(new Person("BB",33)); return"success"; } } |
mysuccess.jsp |
<% PersonComparator pc = new PersonComparator(); request.setAttribute("comparator", pc); %> <s:sort comparator="#request.comparator" source="persons" var="persons2"></s:sort> <s:iterator value="#attr.persons2"> ${Name }+${Age }<br> </s:iterator> |
四、表单标签初体验——示例三
1. 实现
form.jsp(<%@ taglib prefix="s" uri="/struts-tags" %>) |
<s:form action="save"> <s:hidden name="userId"></s:hidden> <s:textfield name="userName" label="UserName"></s:textfield> <s:password name="password" label="PassWord" showPassword="true"回显></s:password> <s:textarea name="desc" label="Desc"></s:textarea> <s:submit></s:submit> </s:form> |
Struts.xml |
<action name="save" class="zzh.struts2.com.UserAction" method="save"> <result name="input">/form-tag.jsp</result> </action> |
publicclass UserAction { private String userId; private String userName; private String password; private String desc; <getter/setter> public String save() { System.out.println(this); return"input"; } |
2. 与html的form相比
Ø Struts2的form标签会生成一个table,自动排版
Ø 可以对表单进行自动回显
3. 测试回显
回显是吧栈顶对象开始匹配属性,并把匹配的属性值辅导对应的标签的value中,若栈顶对象中没有对应的属性,则一次向下寻找
表单回显测试代码 |
public String save() { System.out.println(this);
UserAction uAction = new UserAction(); uAction.setDesc("Oracle"); uAction.setUserId("1001"); uAction.setPassword("122121"); uAction.setUserName("ATGUIGU");
ActionContext.getContext().getValueStack().push(uAction);
return"input"; } |
五、选择
5.1checkbox
<s:checkbox name="married" label="Married" fieldValue="sss"></s:checkbox> |
三个属性。其中如果有fieldValue则提交表单中checkbox的值为“sss”如果没有fieldValue则为true/false
5.2checkboxlist
Ø List、listKey、listValue
Ø OGNL赋值
Ø Map赋值
Ø List赋值
<s:radio name="gender" list="#{'1':'Male','0':'Female'}" label="Gender"></s:radio> <!—服务端需要使用集合类型,以保证能够正常的回显-->不用数组,用集合 <s:checkboxlist name="citys" list="#request.citys" listKey="cityId" listValue="cityName" label="City"></s:checkboxlist> |
5.3 select
<s:select name="age" label="Age"list="{11,12,13,14,15,16,17,18,19,20}" headerKey="" headerValue="请选择"> <s:optgroup label="21-30" list="#{21:21,22:22,222:333 }"> </s:optgroup> <s:optgroup label="31-40" list="#{31:31,32:32,222:333 }"> </s:optgroup> </s:select> |
<s:optgroup>可以用做s:select 的子标签,必须是键值对
六、form-tag.jsp
<% List<City> cities = new ArrayList<City>(); cities.add(new City(1,"北京")); cities.add(new City(2,"南京")); cities.add(new City(3,"太原")); cities.add(new City(4,"西安"));
request.setAttribute("cities", cities); %>
<s:debug></s:debug>
<s:form action="save"> <s:hidden name="userId"></s:hidden> <s:textfield name="userName" label="UserName"></s:textfield> <s:password name="password" label="PassWord" showPassword="true"></s:password> <s:textarea name="desc" label="Desc"></s:textarea>
<s:checkbox name="married" label="Married"></s:checkbox>
<s:radio name="gender" list="#{'1':'Male','0':'Female'}" label="Gender"></s:radio>
<s:checkboxlist name="cities" list="#request.cities" listKey="cityId" listValue="cityName" label="City"></s:checkboxlist>
<s:select name="age" label="Age" list="{11,12,13,14,15,16,17,18,19,20}" headerKey="" headerValue="请选择"> <s:optgroup label="21-30" list="#{21:21,22:22,222:333 }"></s:optgroup> <s:optgroup label="31-40" list="#{31:31,32:32,222:333 }"></s:optgroup>
</s:select>
<s:submit></s:submit> </s:form> |
七、主题
7.1修改主题:
Ø 整体:在<s:form action=”emp-save” theme=”simple”></s:form>
Ø 局部:不多见
Ø 在域对象中
<% request.setAttribute("theme", "simple"); %> |
Ø 全局的:在struts.xml中修改
<conatant name=”struts.ui.theme” value=”simple”></constant> |
7.2 主题类型
Ø Simple
Ø Xhtml
Ø Css
Ø Ajax