Strust2_学习笔记(四)—-中文问题、数据校验
一、Struts中文问题(参考Struts2_1000_CharacterEncoding)
在struts.xml中添加如下配置
<constant name="struts.i18n.encoding"value="GBK"/>
二、数据校验(参考Struts2_1100_SimpleDataValiation)
使用addFieldError方法和s:fieldError标签简单处理数据校验
Action中代码
package com.bjsxt.struts2.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String name;
public String add() {
if(name == null || !name.equals("admin")) {
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;
}
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
JSP页面代码
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
User Add Error!
<s:fielderror fieldName="name" theme="simple"/><!—Struts2展现的标签,由于格式不灵活,实际应用不多-->
<br />
<s:property value="errors.name[0]"/>
<s:debug></s:debug>
</body>
</html>
value stack 中的数据直接写名字就可以取相应的值
如
<s:property value="errors.name[0]"/>
结果为{name=[name is error, name is too long]}