使用Domain Model (实体模型) 接收参数
Struts2_0800_DomainModelParamInput
使用Domain Model接收参数
添加用户
public class UserAction extends ActionSupport { private User user;
//private UserDTO userDTO; public String add() { System.out.println(\ + user.getName()); System.out.println(\ + user.getAge()); return SUCCESS;
}
public User getUser() { return user;
}
public void setUser(User user) { this.user = user; }
}
public class User { private String name; private int age;
public String getName() { return name;
}
public void setName(String name) { this.name = name;
}
public int getAge() { return age;
}
public void setAge(int age) {
- 11 -
}
this.age = age;
一般来说,我们输入参数不一定刚好跟我们的域模型一致,比如说:用户有name跟password两个属性,但是你输入进来的应该还有个密码确认passwordconfiguration 这时候我们要么使用属性接收,要么用DTO,或者VO
实验三:Struts2_2.1.6版本的中文问题
根据Struts文档的规定:只要在Struts.xml中配置这段话就可以解决中文乱码问题 解决办法是:一:升级到2.1.7之后的版本;二是:使用spring的filter,在web.xml中配置过滤 三:在web.xml中配置2.0版本的filter Struts2文档的位置: struts-2.1.8.1-all\\struts-2.1.8.1\\docs\\docs 要知道Strust.xml中有哪些常量可以配置,可以进文档里面查看 例子: struts.i18n.encoding=UTF-8 //表示默认字符集是UTF-8 struts.action.extension=action,, //后缀名可以是“action”,或者是“”空也行。 Struts模块包含 Struts.xml中:配 相当于把文件login.xm内容l复制过来 - 12 - Struts简单数据验证 示例程序:Struts2_1100_SimpleDataValiation UserAction.java public class UserAction extends ActionSupport { } Struts.xml class=\> private String name; public String add() { } public String getName() { } public void setName(String name) { } this.name = name; return name; if(name == null || !name.equals(\)) { } return SUCCESS; this.addFieldError(\, \); this.addFieldError(\, \); return ERROR; 登陆不成功的时候,该怎么样向前台传递信息呢? 这时候其实是个麻烦事,因为我们的userAction实际上是没有跟我们的Request, response属性绑在一起的;userAction访问不到我们的Request, response,ServletContext,这些都没有,在Struts2里面是采用另外一种机制。 This.addFieldError(“name”,”name is error”); 添加对于属性校验的错误信息的,错误信息的名字一般也是我们的属性名字叫做name,那么这个属性出错,后面是这个错误的具体信息:name is error! 13 user_add_error.jsp
User Add Error!
这里调用addFieldError()之后在前面如何把它拿出来? 在这里我们用到struts2的标签
<%@taglib uri=”/struts-tags” prefix=”s”%> Struts的标签定义是位于
如果我们去看源码的话会看到它把我们的错误信息封装成:
指定成CSS修饰,这样就给我们带来不便,这是Struts2设计不太好的地方。所以Struts2展现的标签在企业开发中应用得不多,因为它都是强制要求你必须按照它的命名规则来去定义它的各种各样的展现。
那我们应该怎么样把我们的字符串拿出来?引出下一个标签,这个标签以后会很常用:
当你写了这个标签之后在页面就会默认显示这个标签 [Debug]
点开[Debug]
14
Struts ValueStack(值栈) Debug Value Stack Contents
Object Property Property Name Value texts null actionErrors [] {name=[name errors is error, name is too long]} com.bjsxt.struts2.user.action.UserAction {name=[name fieldErrors is error, name is too long]} errorMessages [] name a locale zh_CN actionMessages [] com.opensymphony.xwork2.DefaultTextProvider texts null 首先:Struts2会把Action里面的属性挨着排给你放进Value Stack 来 专门有这个标签很常用s:property 取到errors实际上是一个map:{name=[name is error, name is too long]} 那么我想取到map里面某一个key的内容: 而这时候实际上value是一个数组,所以我要想去数组的第一项 15