我正在学习struts2,并面临一些问题,显示addFieldError消息..没有显示出来.. 当我运行我的项目,并留下userID字段为空它确实进入验证方法,甚至满足条件isEmpty方法,但它不显示任何错误消息。 我把一个sop statment在的isEmpty方法看,它正在进入或不.. 的statment被印在控制台中,URL变化../MyStruts/validation.action随地没有错误和没有进一步发生..addFieldError在Struts2中不工作
能有人告诉我我在哪里做错了.. 这里是我的代码..
struts.xml的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="validate" extends="struts-default">
<action name="validation" class="com.staction.DataAction">
<result name="success">/success.jsp</result>
<result name="input">/form1.jsp</result>
<result name="error">/error.jsp</result>
</action> </package>
</struts>
form1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
<s:form action="validation">
<h1>
<s:textfield label="UserName" name="userID" />
<s:password label="password" name="password" />
</h1>
<s:submit />
</s:form>
<s:a href="forget">forget password </s:a>
</html>
Action类...
package com.staction;
import org.apache.commons.lang3.StringUtils;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class DataAction extends ActionSupport implements ModelDriven<User> {
private static final long serialVersionUID = 1L;
User user;
DataCheck dc;
public DataAction() {
user=new User();
dc=new DataCheck();
}
@Override
public void validate() {
if(StringUtils.isEmpty(user.getUserID()))
{
System.out.println("hellp");
addFieldError("user.userID", "wtf!!!!");
}
}
public String execute()
{
System.out.println("user.userID");
/* if(dc.isValid(user))
{
return SUCCESS;
}*/
return ERROR;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
终于User
类..
package com.staction;
import org.apache.commons.lang3.StringUtils;
import com.opensymphony.xwork2.ActionSupport;
public class User{
String userID;
String password;
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在这里得到了一些线索..如果我删除modeldriven接口的实现,并把userData和密码字段在myDataAction类,那么它工作正常..有人可以告诉我为什么这样吗? ..请有人尝试这个东西,并回复 – 2013-02-13 22:10:24