addFieldError未在Struts2中工作

addFieldError未在Struts2中工作,struts2,Struts2,我正在学习struts2,在显示addFieldError消息时遇到了一些问题。没有显示任何内容。。 当我运行我的项目并将userID字段留空时,它会进入validate方法,甚至满足isEmpty方法的条件,但它不会显示任何错误消息。。 我将一个s.o.p.语句放在方法中,以查看它是否正在进入。。 声明打印在控制台上,url更改为。/MyStruts/validation.action,任何地方都没有错误,以后也没有任何事情发生 有人能告诉我哪里做错了吗。。 这是我的密码 struts.xml

我正在学习struts2,在显示addFieldError消息时遇到了一些问题。没有显示任何内容。。 当我运行我的项目并将userID字段留空时,它会进入validate方法,甚至满足isEmpty方法的条件,但它不会显示任何错误消息。。 我将一个s.o.p.语句放在方法中,以查看它是否正在进入。。 声明打印在控制台上,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>
您的表格:

<s:textfield label="UserName" name="userID" />
看到区别了吗

此外:

  • 我希望你的代码不是那样随机格式化的;这很难读
  • 为什么您的
    用户
    类扩展了
    操作支持
    ?如果它不是一个动作,不要扩展基本的默认动作:它是毫无意义的,并且具有误导性
  • 考虑给动作命名一些有意义的东西:大多数动作都是“数据动作”
  • 在发布示例时,请删掉注释过的代码和与特定问题不直接相关的内容
您的表格:

<s:textfield label="UserName" name="userID" />
看到区别了吗

此外:

  • 我希望你的代码不是那样随机格式化的;这很难读
  • 为什么您的
    用户
    类扩展了
    操作支持
    ?如果它不是一个动作,不要扩展基本的默认动作:它是毫无意义的,并且具有误导性
  • 考虑给动作命名一些有意义的东西:大多数动作都是“数据动作”
  • 在发布示例时,请删掉注释过的代码和与特定问题不直接相关的内容

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

addFieldError("UserName", "wtf!!!!");

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

addFieldError("UserName", "wtf!!!!");

除了Dave Newton的响应,您还必须删除“用户”。在addFieldError中,Struts2使用getModel自动获取正确的对象,或者您必须为正在运行的对象用户添加set/get方法,以便使用getter访问对象。

除了Dave Newton的响应,您还必须删除“用户”在addFieldError中,Struts2使用getModel自动获取正确的对象,或者您必须为正在运行的对象用户添加set/get方法,以便使用getter访问对象。

但我认为interceptor使userID可用于所有jsp,但不可用于操作类。。对于格式错误,我深表歉意。。实际上,我在用户类中尝试了valdate方法,这就是它存在的原因。.我在这里发布时忘记删除它…很抱歉,对于代码格式,选择文本后在Eclipse中按CTRL+SHIT+F可能会有帮助:)您的问题已经得到回答:/change addFieldError以匹配您的属性名称(我不使用ModelDriven,但它应该可以工作)我更改了它,但它不起作用。你能告诉我,如果你不使用modeldriven,你会使用什么吗…?但我认为interceptor使所有jsp都可以使用userID,但不会对Action类使用。很抱歉格式不好。事实上,我在user类中尝试了valdate方法,这就是它存在的原因。我在这里发布时忘了删除它。很抱歉对于代码格式,选择文本后在Eclipse中按CTRL+SHIT+F可能会有所帮助:)您的问题已经得到回答:/change addFieldError以匹配您的属性名称(我不使用ModelDriven,但它应该可以工作)我更改了它,但它不起作用。。你能告诉我如果你不使用modeldriven,你会用什么吗…?这里有一些线索。。如果我删除modeldriven接口实现,并将userID和password字段放入myDataAction类中,那么它就可以正常工作。。有人能告诉我为什么吗。。请有人试试这个东西,并回答一些线索在这里。。如果我删除modeldriven接口实现,并将userID和password字段放入myDataAction类中,那么它就可以正常工作。。有人能告诉我为什么吗。。请有人试一下,然后回答我六个月前说的是什么,不是吗?我六个月前说的是什么,不是吗?
addFieldError("user.userID", "wtf!!!!");
addFieldError("UserName", "wtf!!!!");