一、struts2参数传递错误
1. 基本数据类型的传递最好使用包装类,原因是struts 2.1之后使用基本数据类型如果参数为空会报错
2. 日期参数的传递最好定义一个区域的属性(定义locale),在struts.properties里面定义struts.locale=zh_CN,原因是日期在不同的区域中格式不一样,所以默认情况下日期会随着浏览器的不同使用不同的区域的日期格式
二、struts2的输入错误验证
1. 在前一篇文章关于struts2系列(一)的文章中搭建的struts2的开发环境中改写HelloWorldAction.java,在里面复写ActionSupport的validate()方法,然后在这个方法里面使用ActionSupport的addFieldError()方法添加错误
HelloWorldAction.java:
package com.study.struts2.demo; import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport { /**
*
*/
private static final long serialVersionUID = 6522825387249101847L; private String msg; @Override
public void validate() {
if (msg == null || "".equals(msg)) {
super.addFieldError("msg", "信息不能为空"); }
} @Override
public String execute() throws Exception { // 通过request取得jsp的内置对象
// this.msg="hellowrold123";
return SUCCESS;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} }
2. 在jindex.jsp页面通过struts2的标签<s:property value=”fieldErrors[‘msg’][0]” />获取错误显示
<%@ page language="java" pageEncoding="UTF-8"%>
<!--引入struts2的标签 -->
<%@ taglib prefix="s" uri="/struts-tags"%>
<body>
<p>
<a href="<s:url action='hello'/>" rel="external nofollow" >Hello World</a>
</p> <!--struts2的取值标签 value="<s:property value="msg" />"输入正确的被保留 -->
<form action="hello.action">
信息:<input type="text" name="msg" value="<s:property value="msg" />" />
<s:property value="fieldErrors['msg'][0]" />
<br> <input type="submit" value="提交">
</form> <!--验证通过后显示 -->
<h2>
<s:property value="msg" />
</h2>
</body>
</html>
3. 验证:在浏览器输入地址http://localhost:8080/TestStruts2/
3.1 首次进入页面
3.2 什么都不输入,点击提交按钮
3.3 输入内容再点击提交按钮