Struts2CRUD
UserBean
//要添加set,get public class UserBean { private Long id; private String name; private String password; private int age; private Date birthday; private Long sex; private Set<Long> likes; private String des;//描述 } public class LikeBean { private Long id; private String name; }
FormAction
public class FormAction{ //属性要生成get,set //标记(添加,修改) private String tip; private UserBean userBean; private List<LikeBean> likeList; private List<UserBean> userList; //到列表页面 public String list(){ userList = new ArrayList<UserBean>(); userList.add(new UserBean("abc",19,new Date())); userList.add(new UserBean("def",70,new Date())); userList.add(new UserBean("ghi",40,new Date())); return "list"; } //到添加页面 public String toAdd(){ likeList = new ArrayList<LikeBean>(); likeList.add(new LikeBean(new Long(1),"上网")); likeList.add(new LikeBean(new Long(2),"读书")); likeList.add(new LikeBean(new Long(3),"游戏")); tip = "add"; return "info"; } //添加方法,Struts2会自动把对应的值赋值给userBean public String add(){ System.out.println(userBean); return "toList"; } //到更新页面,取出值,设置标记 public String toUpdate(){ likeList = new ArrayList<LikeBean>(); likeList.add(new LikeBean(new Long(1),"上网")); likeList.add(new LikeBean(new Long(2),"读书")); likeList.add(new LikeBean(new Long(3),"游戏")); tip = "update"; System.out.println("update name:"+userBean.getName()); userBean = new UserBean("update",100,new Date()); userBean.setId(new Long(101)); userBean.setSex(new Long(2)); userBean.setDes("Struts2用户"); Set<Long> likes = new HashSet<Long>(); likes.add(new Long(2)); likes.add(new Long(3)); userBean.setLikes(likes); return "info"; } //更新方法 public String update(){ System.out.println(userBean); return "toList"; } //删除方法 public String delete(){ System.out.println("del name:"+userBean.getName()); return "toList"; } }
struts.xml配置
<struts> <package name="form" namespace="/form" extends="struts-default"> <!-- 使用通配符调用多个方法,method为*对应的字符串 --> <action name="userAction_*" class="com.struts2.form.FormAction" method="{1}"> <!-- 方法返回的字符串对应name,再转发到页面 --> <result name="list">/form/list.jsp</result> <result name="info">/form/info.jsp</result> <!-- 重定向Action,可以有Action名字和空间,参数 --> <result name="toList" type="redirectAction"> <!-- 空间参数,不写代表和当前Action同一个空间 <param name="namespace">form</param> --> <!-- 重定向Action的名称 --> <param name="actionName">userAction_list</param> <!-- url带的参数,${userBean.name}是动态参数,值为Action的属性userBean中name的值 --> <param name="userName">${userBean.name}</param> <param name="userAge">${userBean.age}</param> </result> </action> </package> </struts>
jsp页面
1.list(列表页面)
<!-- 添加标签 --> <%@ taglib prefix="s" uri="/struts-tags" %> <div><a href="${pageContext.request.contextPath}/form/userAction_toAdd.action">添加</a></div> <div> <!-- 判断用户是否为空 --> <s:if test="(userList!=null)&&(!userList.isEmpty())"> <div>用户列表</div> <!-- 遍历用户 --> <s:iterator value="#request.userList" id="u" status="st"> <s:property value="#st.index+1"/> <s:property value="#u.name"/> <s:property value="#u.age"/> <!-- 格式化日期 --> <s:date name="#u.birthday" format="yyyy-MM-dd HH:mm:ss" /> <a href="${pageContext.request.contextPath}/form/userAction_toUpdate.action?userBean.name=${u.name}">修改</a> <a href="${pageContext.request.contextPath}/form/userAction_delete.action?userBean.name=${u.name}">删除</a> <br/> </s:iterator> </s:if> <s:else> <div>无用户</div> </s:else> </div>
2.info.jsp(添加和修改页面)
<!-- 添加标签 --> <%@ taglib prefix="s" uri="/struts-tags" %> <!-- 显示标记(添加/修改) --> <s:property value="tip"/> <!-- action="userAction_%{tip}"tip为Action中的标记变量 submit不加method --> <s:form action="userAction" namespace="/form" method="POST"> <!-- userBean.id为Action中属性userBean中id的值 --> <s:hidden name="userBean.id"></s:hidden> <s:textfield name="userBean.name" label="用户名" ></s:textfield> <s:textfield name="userBean.age" label="年龄" ></s:textfield> <s:textfield name="userBean.birthday" label="生日" > <!-- 格式化日期 --> <s:param name="value"><s:date name="userBean.birthday" format="yyyy-MM-dd" /></s:param> </s:textfield> <!-- 密码不能回填 --> <s:password name="userBean.password" label="密码" ></s:password> <s:textarea name="userBean.des" label="描述" cols="35" rows="8"></s:textarea> <!-- 这种checkbox显示出来是一行只有一个checkbox <s:iterator value="likeList"> <s:checkbox name="userBean.likes" label="%{name}" fieldValue="%{id}"></s:checkbox> </s:iterator> --> <!-- 这种是一行多个 --> <s:checkboxlist list="likeList" name="userBean.likes" listKey="id" listValue="name" label="爱好"></s:checkboxlist> <!-- 下拉框 <s:select list="likeList" listKey="id" listValue="name" headerKey="-1" headerValue="请选择爱好"></s:select> --> <!-- value="1" 设置默认,但是好像设置了不能回填 --> <s:radio list="#{'1':'男','2':'女'}" label="性别" name="userBean.sex"></s:radio> <s:submit value="%{tip}" id="submitBut" method="%{tip}"></s:submit> </s:form>