<html:messages id=””>标签和<html:errors/>标签
??? <bean:write name="messageid"/>
</html:messages>
saveErrors(request,errors)方法将ActionMessages对象保存到了request范围内,并以“org.apache.struts.Globals.ERROR_KEY”关键字存储。Action基类中saveErrors()方法的关键代码如下。
protected void saveErrors(HttpServletRequest request, ActionMessages errors){
??? request.setAttribute(org.apache.struts.Globals.ERROR_KEY,errors);
}
在页面方可通过<html:errors bundle="user" property="nameEmpty"/>来显示相关错误的消息
或者
<html:messages id="error" bundle="user" property="nameEmpty" >
??? <bean:write name="error"/>
</html:messages>
来取property="nameEmpty"的单个的错误消息(注:id只是一个标示,只要和bean:write的name属性保持一致即可)
----------------------------------------
或者
<html:messages id="error" bundle="user">
<bean:write name="error"? />
</html:messages>
来取所有的错误消息
相当于
<html:errors bundle="user"/>
另外,还可以通过saveMessages(request,errors)方法将ActionMessages对象保存到request范围内,但此时在request范围中以“org.apache.struts.Globals.MESSAGE_KEY”关键字存储。Action基类中saveMessages()方法的关键代码如下。
protected void saveMessages(HttpServletRequest request, ActionMessages errors) {
??? request.setAttribute(org.apache.struts.Globals.MESSAGE_KEY,errors);
}
所以如果使用了saveMessages()方法存储消息,在使用<html:errors>标签输出消息时,要通过name属性来指定在 request或session范围内以“org.apache.struts. Globals.MESSAGE_KEY”关键字来查找ActionMessages对象。否则此时忽略name属性,Struts会使用默认的关键字“org.apache.struts.Globals. ERROR_KEY”进行查找,将找不到存储的消息。
<html:messages id="error" bundle="user" message="true">
<bean:write name="error"? />
</html:messages>
或者
<html:messages id="error" bundle="user" message="true" property="nameEmpty">
<bean:write name="error"? />
</html:messages>
分别来取全部或者是单个的错误消息
?
注意点:
虽然Struts已经声明:不推荐使用ActionErrors & ActionError对象,但在一些遗留的系统中,依然还是可以看到其影子,所以如果你的系统不幸属于这样的两种混合系统,有以下的几种方法可以参考
1。两次调用messagesPresent,如下
<!-- Print ActionErrors Object -->
<logic:messagesPresent>
?? <html:messages id="msg" message="true">
???? <div message="true">
???? <div class="success">
?????? <bean:write name="msg"/>
???? </div><br/>
?? </html:messages>
</logic:messagesPresent>
2.分别使用<html:messages> <html:errors>标签,当然在老系统中需要调用Action的saveErrors方法,而在新的应用中要调用saveMessages方法。
3.更换所有的ActionErrors为ActionMessages,并将所有调用saveErrors的地方更换成saveMessages,并将<html:errors>标签相应的更换成<html:messages message="true"> - 推荐!