日期:2014-05-17  浏览次数:20573 次

<html:messages id=””>标签和<html:errors/>标签

<html:errors>标签与<html:messages>标签都是用来输出request或session范围内的消息的。它们之间有着相同的地方,也有不同的地方。

?

<html:errors/>标签

它表示输出request或session范围内的以“org.apache.struts.Globals.ERROR_KEY”为关键字存储的ActionMessages对象中的所有消息。

可通过以下属性的设置来输出指定的消息。

name属性:指定request或session范围内的关键字,该关键字指定了一个ActionMessages对象。若忽略该属性,则默认的关键字为“org.apache.struts.Globals. ERROR_KEY”。

property 属性:用于指定由name属性指定的关键字指定的ActionMessages对象中的某个消息属性,该消息属性指定了某个ActionMessage对象。若忽略该属性,则<html:errors/>标签会输出指定ActionMessages中的所有消息。

bundle属性:指定消息资源文件。若忽略该属性则从默认的消息资源文件ApplicationResources.properties中获取输出的消息内容。

?

<html:messages>标签

<html:messages>有一个必添项id

该标签与<html:errors>标签相似,同样用来输出消息。它们之间有着相同的地方,也有不同的地方。

1.与<html:errors>标签的相同点

消息来源:<html:messages>标签要输出的消息来源与<html:errors>标签相同,同样可以通过 saveErrors()或saveMessages()方法将ActionMessages对象存入request或session范围内。例如:

ActionMessage messages=new ActionMessages();

errors.add("username",new ActionMessage("com.logon.name.error"));

saveErrors(request,messages);

属性:<html:messages>标签的name属性、property属性、bundle属性以及footer属性、header属性分别与<html:errors/>标签中对应的属性用法相同。

2.与<html:errors>标签的不同点

属性

message 属性,<html:errors>标签中不存在的属性。当忽略该属性或将其设为“false”时,则根据由name属性指定的关键字在 request或session范围中查找该关键字存储的ActionMessages对象,若此时没有设置name属性,则查找以默认关键字 “org.apache.struts.Globals.ERROR_KEY”存储的ActionMessages对象;若将message属性设为 “true”,表示以“org.apache.struts.Globals.MESSAGE_KEY”关键字进行查找,并且此时设置的name属性无效。

id 属性,该属性是<html:messages>标签必须存在的属性,而<html:errors>标签中不存在该属性。它用来指定一个JSP页面变量,该变量代表了每次从ActionMessages对象中遍历出的一个ActionMessage对象。

使用方法:单独使用<html:messages>标签是不能输出消息的。因为该标签完成的操作只是对ActionMessages对象进行遍历,并将每次遍历出的ActionMessage对象存储在id属性所指定的JSP页面变量中。所以通常情况下嵌套<bean:write> 标签一起使用,<bean:write>标签中的name属性要与<html:messages>标签的id属性相匹配。

说明:<bean:write>标签用来输出由name属性指定的对象值。详细的介绍请参看本书中的第8章。

使用<html:messages>标签输出消息的代码如下。

<html:messages id="messageid" message="true">

??? <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"/>来显示相关错误的消息

或者