我正在为我的应用程序使用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中,不会显示任何错误消息。请让我知道如何解决这个问题。
答案 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。如果这是一个新的应用程序,我建议你看一些更新的应用程序。