Struts错误消息未在UI中显示

时间:2013-05-12 11:25:47

标签: java struts struts-1 struts-validation struts-action

我正在为我的应用程序使用Struts 1.2。我有一个表单的验证方法,我正在对用户提供的输入进行一些验证。以下是用户提供的userName代码:

@Override
public ActionErrors validate(ActionMapping mapping,
        HttpServletRequest request) {

    System.out.println("Validating the Form...");
    ActionErrors errors = new ActionErrors();

    if(userName != null && userName.length() <= 0)
        errors.add("userName",new ActionError("Invalid UserName"));

    return errors;
}

如果用户没有输入userName,则应在UI中显示上述错误消息。下面是我在jsp文件中用于显示上述错误消息的代码:

<logic:messagesPresent property="userName">                             
    <html:messages id="userName" property="userName">
        <bean:write name="userName"/>
    </html:messages>
</logic:messagesPresent>

但它没有显示任何错误消息。

我也试过这个替代方案,但这也没有用。:

<logic:messagesPresent property="userName">                             
        <html:errors property="userName" /><html:errors/>       
</logic:messagesPresent>

当我尝试调试代码时,validate方法正在form中执行,并且由于存在验证错误,因此未触发execute方法。在UI中,不会显示任何错误消息。请让我知道如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

ActionError不会收到错误消息本身。相反,它需要application's MessageResources bundle中的错误消息的密钥。

来自Automatic Form Validation上的Struts文档:

  

返回一个包含ActionMessage的ActionErrors实例,它是包含应显示的错误消息键(进入应用程序的MessageResources包)的类。

所以,你应该这样做:

errors.add("userName",new ActionError("userName.invalid"));

然后,在你的资源包中,你应该有这样的东西:

userName.invalid=Invalid UserName

此外,Struts 1.x已经很老了,已达到End-Of-Life。如果这是一个新的应用程序,我建议你看一些更新的应用程序。