<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java技術專區--Hilly

    http://blog.duyouyou.com
       :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

    LookupDispatchAction使用示例(中文)(轉)

    Posted on 2006-07-20 18:04 duyouyou.com 閱讀(3101) 評論(0)  編輯  收藏 所屬分類: web技術
    org.apache.struts.actions.LookupDispatchAction類別是 DispatchAction 類別的子類,與DispatchAction類似的是,它透過請求上的參數來決定該執行哪一個方法,不過LookupDispatchAction多了查 詢訊息資源檔案的功能,LookupDispatchAction的用處之一,就是當一個表單中包括兩個以上的按鈕時,可以透過查詢訊息資源檔來確定相對 應的動作。

    直接以實例來說明,在繼承LookupDispatchAction之後,您要重新定義getKeyMethodMap()方法,并定義好自己的相關處理方法,例如:
    • EditAction.java
    package onlyfun.caterpillar;

    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.apache.struts.actions.*;

    public class EditAction extends LookupDispatchAction {
    protected Map getKeyMethodMap() {
    Map map = new HashMap();
    map.put("button.save", "save");
    map.put("button.preview", "preview");
    map.put("button.reset", "reset");
    return map;
    }

    public ActionForward save(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception {
    // ......
    }

    public ActionForward preview(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception {
    // ......
    }

    public ActionForward reset(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception {
    // ......
    }
    }

    假設訊息資源檔中包括以下的訊息:
    • messages.properties
    button.save=Save
    button.preview=Preview
    button.reset=Reset

    為了要使用LookupDispatchAction,在struts-config.xml中定義請求參數中該有的名稱:
    • struts-config.xml
    ...
    <action path="/edit"
    type="onlyfun.caterpillar.EditAction"
    parameter="method"
    name="editForm"/>
    ...

    現在假設您的表單頁面包括以下的內容:
    ...
    ?<form name="editForm" method="post"
    ?????? action="/strutsapp/edit.do">
    ??? .....
    ??? <input type="submit" name="method" value="Save"/>
    ??? <input type="submit" name="method" value="Preview"/>
    ??? <input type="submit" name="method" value="Reset"/>
    ?</form>
    ...

    當您按下任一個按鈕時,請求參數中會包括method=Save或是method=Preview或是method= Reset,假設是method=Save好了,LookupDispatchAction會根據它作為value,在訊息資訊檔找到對應的key,然後 根據key與getKeyMethodMap()得知要執行的方法為save()方法。

    那么關於國際化訊息管理的部份呢?例如想要在表單按鈕上使用中文?
    ?...
    ?<form name="editForm" method="post"
    ?????? action="/strutsapp/edit.do">
    ??? .....
    ??? <input type="submit" name="method" value="存檔"/>
    ??? <input type="submit" name="method" value="預覽"/>
    ??? <input type="submit" name="method" value="重設"/>
    ?</form>
    ...

    一樣的,您的訊息檔案中必須包括下面的內容:
    • messages.properties
    button.save=存檔
    button.preview=預覽
    button.reset=重設

    然後,您要使用native2ascii將訊息檔案轉換為Unicode編碼,例如:
    native2ascii messages_zh_TW.txt messages_zh_TW.properties

    接下來的問題是,瀏覽器發送過來的中文參數,為了要能正確的解析,要使用request的 setCharacterEncoding("Big5"),這樣才能得到正確的中文參數,但是在什么地方作這個動作?您可以在Servlet Filter中作這件事,另一個可能的地方則是 ActionForm 的reset()方法中,例如:
    package onlyfun.caterpillar;

    public class UserForm extends ActionForm {
    ???? ......

    ??? public void reset(ActionMapping mapping,
    ???????????????????? HttpServletRequest request) {
    ??????? try {
    ??????????? request.setCharacterEncoding("Big5");
    ??????????? .......
    ??????? }
    ??????? catch(Exception e) {
    ??????????? ....
    ??????? }
    ?? }
    }
    ?

    這樣您的按鈕就可以使用中文訊息了。

    如果您愿意的話,可以搭配使用 <bean:message> 來使用上述的功能,直接由標簽來管理訊息檔案中的訊息。

    Hold住
    主站蜘蛛池模板: 日韩毛片在线免费观看| 七次郎成人免费线路视频| 亚洲精品无播放器在线播放 | 99视频在线精品免费| 噼里啪啦电影在线观看免费高清| 免费人成无码大片在线观看| 亚洲最大视频网站| 国产免费伦精品一区二区三区| 99无码人妻一区二区三区免费 | 亚洲A∨无码无在线观看| 久久亚洲AV成人无码国产电影| 国产成人免费AV在线播放| 爽爽日本在线视频免费| 91亚洲自偷手机在线观看| 一级毛片免费在线| 久久久久噜噜噜亚洲熟女综合| 成人免费视频一区| 亚洲午夜久久久久久尤物| 日本免费中文字幕| 在线亚洲午夜理论AV大片| www亚洲精品久久久乳| 中文字幕无码不卡免费视频| 亚洲国产成人精品无码区在线观看| 亚洲AV综合永久无码精品天堂| 日韩成人免费视频播放| 学生妹亚洲一区二区| 亚洲视频在线观看免费视频| 亚洲成AV人片在线播放无码| 最近免费2019中文字幕大全| 亚洲AV成人无码久久精品老人| 57pao国产成视频免费播放 | 免费一级全黄少妇性色生活片| 亚洲熟妇av一区二区三区漫画| 日韩一区二区三区免费播放| 亚洲av中文无码乱人伦在线播放| 国产在线播放线91免费| 狠狠亚洲婷婷综合色香五月排名| 久久久久免费看黄a级试看| 亚洲AV日韩AV天堂一区二区三区| 九九精品免费视频| 狠狠色香婷婷久久亚洲精品|