Struts基于List(未使用泛型)的类型转换

布满荆棘的人生 2021-07-24 11:37 458阅读 0赞

一 视图

1 input.jsp

  1. <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
  2. <%@taglib prefix="s" uri="/struts-tags"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <title>直接封装成List</title>
  8. </head>
  9. <body>
  10. <h3>直接封装成List</h3>
  11. <s:form action="login">
  12. <s:textfield name="users[0].name" label="第一个用户名"/>
  13. <s:textfield name="users[0].pass" label="第一个密码"/>
  14. <s:textfield name="users[1].name" label="第二个用户名"/>
  15. <s:textfield name="users[1].pass" label="第二个密码"/>
  16. <tr>
  17. <td colspan="2"><s:submit value="转换" theme="simple"/>
  18. <s:reset value="重填" theme="simple"/></td>
  19. </tr>
  20. </s:form>
  21. </body>
  22. </html>

2 welcome.jsp

  1. <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
  2. <%@taglib prefix="s" uri="/struts-tags"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <title>转换成功</title>
  8. </head>
  9. <body>
  10. <s:actionmessage/>
  11. 第一个User实例的用户名为:<s:property value="users[0].name"/><br/>
  12. 第一个User实例的密码为:<s:property value="users[0].pass"/><br/>
  13. 第二个User实例的用户名为:<s:property value="users[1].name"/><br/>
  14. 第二个User实例的密码为:<s:property value="users[1].pass"/><br/>
  15. </body>
  16. </html>

二 配置文件

  1. <?xml version="1.0" encoding="GBK"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <package name="lee" extends="struts-default">
  7. <action name="login" class="org.crazyit.app.action.LoginAction">
  8. <result>/WEB-INF/content/welcome.jsp</result>
  9. <result name="error">/WEB-INF/content/welcome.jsp</result>
  10. </action>
  11. <action name="*">
  12. <result>/WEB-INF/content/{1}.jsp</result>
  13. </action>
  14. </package>
  15. </struts>

三 action

  1. package org.crazyit.app.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. import java.util.List;
  4. import org.crazyit.app.domain.*;
  5. public class LoginAction extends ActionSupport
  6. {
  7. // Action类里包含一个不带泛型的List类型的成员变量
  8. private List users;
  9. // users的setter和getter方法
  10. public void setUsers(List users)
  11. {
  12. this.users = users;
  13. }
  14. public List getUsers()
  15. {
  16. return this.users;
  17. }
  18. public String execute() throws Exception
  19. {
  20. // 在控制台输出Struts 2封装产生的List对象
  21. System.out.println(getUsers());
  22. // 因为没有使用泛型,所以要进行强制类型转换
  23. User firstUser = (User)getUsers().get(0);
  24. // users属性的第一个User实例来决定控制逻辑
  25. if (firstUser.getName().equals("crazyit.org")
  26. && firstUser.getPass().equals("leegang") )
  27. {
  28. addActionMessage("登录成功!");
  29. return SUCCESS;
  30. }
  31. addActionMessage("登录失败!!");
  32. return ERROR;
  33. }
  34. }

对应的属性文件LoginAction-conversion.properties

  1. Element_users=org.crazyit.app.domain.User

四 领域模型

  1. package org.crazyit.app.domain;
  2. public class User
  3. {
  4. private String name;
  5. private String pass;
  6. // name的setter和getter方法
  7. public void setName(String name)
  8. {
  9. this.name = name;
  10. }
  11. public String getName()
  12. {
  13. return this.name;
  14. }
  15. // pass的setter和getter方法
  16. public void setPass(String pass)
  17. {
  18. this.pass = pass;
  19. }
  20. public String getPass()
  21. {
  22. return this.pass;
  23. }
  24. }

五 测试

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,458人围观)

还没有评论,来说两句吧...

相关阅读