1

我正在学习 struts2 并且在显示 addFieldError 消息时遇到了一些问题..没有显示..当我运行我的项目并将 userID 字段留空时,它确实进入了 validate 方法,甚至满足了isEmpty方法的条件,但它没有显示任何错误消息..我在isEmpty方法中放了一个 sop 语句来查看,它是否进入.. 语句打印在控制台上,url 更改为../MyStruts/validation.action,任何地方都没有错误,也没有任何反应更远..

有人可以告诉我我在哪里做错了..这是我的代码..

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>

动作课...

    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;
}
   }
4

3 回答 3

2

你的表格:

<s:textfield label="UserName" name="userID" />

您的字段错误:

addFieldError("user.userID", "wtf!!!!");

看到不同?

还:

  • 我希望您的代码实际上不是那样随机格式化的;很难阅读。
  • 为什么你的User课要扩展ActionSupport?如果它不是一个动作,请不要扩展基本的默认动作:它没有意义,而且具有误导性。
  • 考虑将动作命名为有意义的东西:大多数动作都是“数据动作”。
  • 在发布示例时,请删除注释掉的代码和与特定问题不直接相关的内容。
于 2013-02-13T21:09:51.587 回答
0

除了戴夫牛顿的回应,您必须删除“用户”。在 addFieldError 中,以便 Struts2 使用 getModel 自动获取正确的对象,或者您必须在 Action 中为对象用户添加 set/get 方法,以便使用 getter 访问对象。

于 2014-09-20T01:32:15.077 回答
-1

Jst 使用要验证的字段的名称...将您的代码更改为

addFieldError("UserName", "wtf!!!!");
于 2013-08-28T11:30:32.260 回答