0

我正在为我的应用程序使用 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 中,不会显示任何错误消息。请让我知道如何解决这个问题。

4

1 回答 1

2

ActionError不接受错误消息本身。相反,它获取应用程序 MessageResources bundle中错误消息的键。

来自关于自动表单验证的 Struts 文档:

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

所以,你应该这样做:

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

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

userName.invalid=Invalid UserName

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

于 2013-05-12T11:48:26.803 回答