转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html
1.基础表单标签
准备工作:建立struts2tag项目,搭建好struts2的开发环境。在html我们常用的基础表单标签主要有文本域、密码域、提交、重置四种。它们在strust2中可以通过标签来生成。下面建立login.jsp页面,与这四种标签相关的内容如下:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<s:form action="login" method="post" namespace="/my">
<s:textfield label="用户名" name="user.username" required="true" requiredposition="right"/>
<s:password label="密码" name="user.password" required="true" />
<s:reset value="重置" align="left"/>
<s:submit
value="注册" align="left"/>
</s:form>
</body>
</html>
说明:label中的内容是显示在表单前的提示内容,required设为true,表示此表单项为必填内容。
2.单选按钮和复选框:
<s:radio list="#{1:'男',0:'女'}" value="1" label="性别" name="user.sex"/>
<s:checkboxlist list="#{1:'足球',2:'排球',3:'蓝球',4:'网球'}" name="user.love" label="爱好"/>
3.三种方式实现下拉列表
<s:bean id="p" name="com.asm.NativePlaceFormAction"></s:bean>
<s:bean name="com.asm.NativePlaceMapFormAction" id="pMap"></s:bean>
<s:bean name="com.asm.NativePlaceProFormAction" id="pp"></s:bean>
<s:select list="#p.place" label="籍贯" name="user.place"/>
<s:select list="#pMap.place" label="籍贯2" name="user.place"/>
<s:select list="#pp.place" listKey="pId" listValue="pName" label="籍贯3" name="user.place" headerKey="-1" headerValue="---省---" emptyOption="true"/>
说明:三种方式实现下拉列表分别对应了三个java类,这三个类的内容为:
NativePlaceFormAction主要代码为:
package com.asm;
public class NativePlaceFormAction extends ActionSupport {
private List<String> place;
public NativePlaceFormAction(){
place=new ArrayList<String>();
place.add("山东省");
place.add("山西省");
place.add("河南省");
place.add("河北省");
place.add("四川省");
place.add("云南省");
}
...省略place的get/set方法
}
NativePlaceMapFormAction主要代码为:
package com.asm;
public class NativePlaceMapFormAction extends ActionSupport {
private Map<Integer, String> place;
public NativePlaceMapFormAction() {
place = new HashMap<Integer, String>();
place.put(1, "山东省");
place.put(2, "山西省");
place.put(3, "河南省");
place.put(4, "河北省");
place.put(5, "四川省");
place.put(6, "云南省");
}
...省略place的get/set方法
}
NativePlaceProFormAction主要代码为:
package com.asm;
public class
NativePlaceProFormAction extends ActionSupport {
private List<Object> place;
public NativePlaceProFormAction(){
place=new ArrayList<Object>();
new Province(1,"山东省","济南");
place.add(new Province(1,"山东省","济南"));
place.add(new Province(2,"山西省","太原"));
place.add(new Province(3,"河南省","郑洲"));
place.add(new Province(4,"河北","石家庄"));
place.add(new Province(5,"四川","成都"));
place.add(new Province(6,"云南","昆明"));
}
...省略place的get/set方法
}
说明:此三种实现效果一样,但是在它们提交时传递给服务器的参数不同,具体可以参看login.jsp页面的源码。另外,这三种实现其实都依赖了<s:bean>设定的对象,如果我们不希望依赖<s:bean>来设定,可以通过配置action来实现:下面我们以NativePlaceFormAction说明:首先在struts.xml中配置此action,配置内容如下:
<action name="npf"
class="com.asm.NativePlaceFormAction">
<result>/login2.jsp</result>
</action>
随后,我们在login.jsp中增加如下内容:
<a href="<%=request.getContextPath()%>/my/npf.action">另一个注册页面</a>
其中login2.jsp中的关键内容为:
<s:select list="place" label="籍贯" name="user.place"/>
我们可以发现:在login2.jsp中填写list的值时并没有用ognl表达式,因为我们通过npf.action来访问时,此Action已经被写入到了值栈中,所以我们可以直接引用。 后面所用到的实例,我们都会把这样的类做成Action,这样如果我们想通过这种方式访问便只需要在struts.xml中配置即可