日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入探讨struts的ActionMessages消息机制(转)

發(fā)布時(shí)間:2025/6/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入探讨struts的ActionMessages消息机制(转) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?深入探討struts的ActionMessages消息機(jī)制?


2007-11-22 10:23:01標(biāo)簽:struts?ActionMessages?消息機(jī)制    [推送到技術(shù)圈]?

版權(quán)聲明:原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時(shí)請務(wù)必以超鏈接形式標(biāo)明文章?原始出處?、作者信息和本聲明。否則將追究法律責(zé)任。http://leaze.blog.51cto.com/83088/51750
在介紹ActionMessages前,我覺得有必要先介紹一下ActionMessages的數(shù)據(jù)結(jié)構(gòu).理解了其數(shù)據(jù)結(jié)構(gòu)有助于理解相關(guān)的各種操作.ActionMessages以一個(gè)HashMap存儲(chǔ)ActionMessage.Map中的key是一個(gè)標(biāo)識(shí),其對(duì)應(yīng)的value是一個(gè)List對(duì)象,所有的ActionMessage存儲(chǔ)在List中.也就是說key標(biāo)識(shí)了一組ActionMessage.先介紹涉及到的類中的幾個(gè)常用方法,然后給出幾個(gè)示例代碼,幫助理解.
  • ActionMessage?
    • ActionMessage(String key)
      該方法接受一個(gè)字符串,字符串是在資源文件種配置的key值,必須在配置文件中進(jìn)行相關(guān)配置.
    • ActionMessage(String key,Object value)
      ActionMessage(String key,Object value0,Object value1)
      ActionMessage(String key,Object value0,Object value1,Object value2)
      ActionMessage(String key,Object value0,Object value1,Object value2,Object value3)
      上面4個(gè)方法第一個(gè)參數(shù)同樣是資源文件中配置的key值,同樣必須在配置文件中進(jìn)行相關(guān)配置.后面的參數(shù)為資源文件中key所對(duì)應(yīng)的信息中需要的參數(shù)
    • ActionMessage(String key,Object[] values)
      這種方法第一個(gè)參數(shù)同上,第二個(gè)參數(shù)接受一個(gè)Object數(shù)組,其中保存key在資源文件中對(duì)應(yīng)信息需要的參數(shù).
  • ActionMessages
    • ActionMessages.add(String property,ActionMessage message)
      第一個(gè)參數(shù)property對(duì)應(yīng)于<html:messages>標(biāo)簽中的property屬性,具體使用方法在后面介紹. property的值一般采用ActionMessages類中的靜態(tài)常量ActionMessages.GLOBAL_MESSAGE,也可以自己定義一個(gè)key.該方法執(zhí)行時(shí),先判斷ActionMessages中有沒有該key,如果沒有就新添加對(duì)key-List鍵值對(duì);如果有同樣的key,就先獲取該key對(duì)應(yīng)的Value并轉(zhuǎn)換為List對(duì)象,然后將(ActionMessage)message添加進(jìn)List對(duì)象中.
    • ActionMessages.add(ActionMessages ams)
      該方法將參數(shù)中保存的ActionMessage合并到調(diào)用ActionMessages中.
  • Action及其所有子類
    • addMessages(HttpServletRequest request,ActionMessages messages)
      該方法首先檢查request對(duì)象中是否有ActionMessages對(duì)象,如果有對(duì)象,則將接收的ActionMessages合并到request中,如果沒有,用setAttribute(Globals.MESSAGE_KEY,messages)方法將messages添加進(jìn)去.如果一個(gè)Action中需要顯示多條錯(cuò)誤信息,推薦使用該方法.(Globals.MESSAGE_KEY = "org.apache.struts.action.ACTION_MESSAGE")
    • saveMessages(HttpServletRequest request,ActionMessages messages)
      該方法保存messages時(shí),如果request中已經(jīng)有一個(gè)ActionMessages對(duì)象,則用新的覆蓋原有的.不推薦使用該方法,該方法容易發(fā)生丟失信息的情況.
    • addErrors()和saveErrors()
      這兩個(gè)方法與addMessages()和saveMessages()相似,不過在HttpServletRequest.setAttribute()時(shí)的參數(shù)不一樣,這兩個(gè)方法是:setAttribute(Globals.ERROR_KEY,messages)添加的.(Globals.ERROR_KEY = "org.apache.struts.action.ERROR")
在request中添加的ActionMessages在頁面顯示時(shí),用<html:messages>標(biāo)簽進(jìn)行顯示,下面介紹一下該標(biāo)簽和經(jīng)常配套使用的<logic:messagePresent>標(biāo)簽.<html:messages>
?id?必須指定id屬性.<html:messages>標(biāo)簽作用是遍歷ActionMessages對(duì)象中的所有????ActionMessage.類似<logic:iterator>,每次循環(huán)都定義一個(gè)名稱為id指定的頁面范圍的bean,然后用????<bean:write>標(biāo)簽進(jìn)行輸出.
?bundle?綁定一個(gè)MessageResources,不指定的時(shí)候從上下文中配置的資源中檢索.一般不指定bundle屬性.
?locale?指定本地化信息,不指定時(shí)和Session的本地化信息相同,一般不用指定.
?name?指定ActionMessages對(duì)象在request中的key.不指定時(shí),默認(rèn)用??????GLOBALS.ERROR_KEY="org.apache.struts.action.ERROR",用Action.addMessages()方法添加的信息將不????被顯示,用Action.addErrors()方法添加的信息才會(huì)被顯示.一般不指定.
?property?指定哪些ActionMessage將被顯示,與ActionMessages.addMessage(String property,ActionMessage am)中的property參數(shù)相對(duì)應(yīng).不指定的時(shí)候顯示所有信息.
?header?指定一個(gè)資源信息key,在顯示ActionMessages前打印到頁面上,可選.
?footer?指定一個(gè)資源信息key,在顯示完ActionMessages后打印到頁面上,可選.
?message取值為true/false,默認(rèn)為false.為false或不指定時(shí),在request中查找key=Globals.ERROR_KEY的ActionMessages bean.當(dāng)該屬性設(shè)置為true時(shí),在request中查找key=Globals.MESSAGE_KEY的ActionMessages bean,同時(shí)name屬性的值將被忽略.
<logic:messagesPresent>和<logic:messagesNotPresent>標(biāo)簽,只支持message,name,property3個(gè)屬性,作用和<html:messages>相同,就不再介紹

下面給出一段代碼,幫助大家理解,這里只寫了關(guān)鍵代碼.1. Action 類中的部分代碼:ActionMessages ams =?new?ActionMessages();?
????ams.add(ActionMessages.GLOBAL_MESSAGE,????????????????????????????? new?ActionMessage("addMessages : global message",false));?
????ams.add("error",new?ActionMessage("addMessages : error message",false));?
????ams.add("info",new?ActionMessage("addMessages : info message",false));?
????this.addMessages(httpServletRequest,ams);?

????ActionMessages errorMessage =?new?ActionMessages();?
????errorMessages.add(ActionMessages.GLOBAL_MESSAGE,new?ActionMessage("addErrors : global message",false));?
????errorMessages.add("error",new?ActionMessage("addErrors : error message",false));?
????errorMessages.add("info",new?ActionMessage("addErrors : info message",false));?
????this.addErrors(httpServletRequest,errorMessages);
2. ?JSP文件中的部分代碼:
?
<html:messages?id="message">?
??<bean:write?name="message"/>?
??<br/>?
</html:messages>?
<!-- 上面代碼的輸出結(jié)果:?
??addErrors : global message?
??addErrors : error message?
??addErrors : info message?
-->?

<html:messages?id="message"?property="info">?
??<bean:write?name="message"/>? <br />?
</html:messages>?
<!-- 這段代碼的輸出結(jié)果為:?
??addErrors : info message?
-->?

??
<html:messages?id="message"?message="true">?
??<bean:write?name="message"/>?<br />?
</html:messages>?
<!-- 這段代碼的輸出結(jié)果:?
??addMessages : global message?
??addMessages : error message?
??addMessages : info message?
-->?

<html:messages?id="message"?message="true"?property="info">?
??<bean:write?name="message"/><br />
</html:messages>?
<!-- 這段代碼的輸出結(jié)果為:?
??addMessages : info message?
-->?

如果結(jié)合上<logic:messagesPresent>標(biāo)簽,將可以做出自由度很高的錯(cuò)誤信息顯示效果,具體如何表現(xiàn)這里就不在細(xì)說了.<logic:messagePresent>的使用方法大家自己體會(huì),我相信大家掌握了<html:messages>,一定能駕馭<logic:messagesPresent>對(duì)struts的ActionMessages的討論就到這里,希望這篇文章能對(duì)廣大剛接觸struts的朋友們有所幫助.?本文出自 “立子” 博客,請務(wù)必保留此出處http://leaze.blog.51cto.com/83088/51750

轉(zhuǎn)載于:https://blog.51cto.com/j2eedev/169539

總結(jié)

以上是生活随笔為你收集整理的深入探讨struts的ActionMessages消息机制(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。