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

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

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

    Struts2+Freemarker+Ognl中解析request請求的方法

    1.首先struts2為我們定義了幾個可以在ftl中使用的變量,都放在了org.apache.struts2.views.util.ContextUtil里面,具體怎么做的,還沒有看。
    1. public static final String REQUEST = "request";

    2. public static final String REQUEST2 = "request";

    3. public static final String RESPONSE = "response";

    4. public static final String RESPONSE2 = "response";

    5. public static final String SESSION = "session";

    6. public static final String BASE = "base";

    7. public static final String STACK = "stack";

    8. public static final String OGNL = "ognl";

    9. public static final String STRUTS = "struts";

    10. public static final String ACTION = "action";
    復制代碼
    這里定義了我們常用的${base}、${stack}等。
    注意:這里面定義都是對應的類。例如stack對應的就是ValueStack,所以我們在頁面可以使用
    ${stack.findValue('@com.Blog@PERMIT_COMMENT_BY_NONE')}.這就是方法問ValueStack的findValue方法。我們還可以使用
    ${request}來使用HttpServletRequest類,(只能)然后調用里面的方法。例如${request.getAttribute("aaa")}等。

    2.通過使用struts2我們知道,頁面傳遞過來的值都是保存在ActionContext中的值棧里面的,其中這個值棧是ActionContext 的根,因此可以不用加“#”訪問。而在ActionContext中還封存了其他的東西,比如request,session、parameters 等。。但是一定要注意。這里的request、session、parameters等不是HttpServletRequest那些類,而是一個 map。而且進行了重新組裝,例如request封裝了 ServletActionContext.getRequest().setAttribute("aaa", "bbb");信息
    我們通過Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot())就可以取到值。當然request這個map中還有一些其他的東西,例如我的打印結果是;
    System.out.println(Ognl.getValue("#request", context.getContextMap(),new Object()));通過打印可以看出來
    這些可以參考
    http://hi.baidu.com/maml897/blog/item/e6d962c3d55e6338e5dd3bb0.html。

    3.我們知道 ftl頁面 ${}寫的都是 ognl表達式,而且都是 根里面的 ,所以不用加上“#”,但是 要訪問ActionContext里面,不是根的request怎么辦呢?
    我是這樣用的 ${#request}發現時錯誤的,后來查找資料發現
    使用
    ${Request["a"]}
    ${RequestParameters["a"]}
    ${Session ["a"]}
    ${Application  ["a"]}
    或者${Application.myApplicationAttribute}
    ${Session.mySessionAttribute}
    ${Request.myRequestAttribute}
    ${Parameters.myParameter}
    千萬要注意的是
    Application、Session、Request、Parameters都是map。都是大寫的,沒有寫成${#request}這個我也不知道為什么,
    在頁面 用了大寫。
    可以參考freemarker.ext.servlet.FreemarkerServlet
    在action里使用
    System.out.println(Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot()));

    剛才發現 在jsp頁面里訪問 actionContext的內容
    ${request}
    這樣寫 是訪問actionContext的request,而不是 struts2內定的
    用struts2標簽
    <x:property value="#request.toString()"/>
    就要加"#"

    posted on 2012-06-08 18:58 youngturk 閱讀(1544) 評論(0)  編輯  收藏 所屬分類: freemark

    <2012年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導航

    統計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結構
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV中文无码乱人伦下载| 不卡精品国产_亚洲人成在线 | 亚洲色偷偷色噜噜狠狠99| 无码A级毛片免费视频内谢| 亚洲伊人久久大香线蕉综合图片| 水蜜桃视频在线观看免费| 又大又硬又爽免费视频| 国产青草亚洲香蕉精品久久| 国产国产人免费人成免费视频| 亚洲av无一区二区三区| 免费a级黄色毛片| 野花视频在线官网免费1| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲Av永久无码精品黑人 | 久久精品国产精品亚洲| 久久免费观看视频| 久久久久无码专区亚洲av| 成人免费ā片在线观看| 亚洲av无码av制服另类专区| 日韩午夜理论免费TV影院| 亚洲国产人成在线观看| 成年人免费网站在线观看| 亚洲AV无码专区在线厂| 亚洲精品国产电影| 久久中文字幕免费视频| 亚洲精品午夜国产va久久| 免费少妇a级毛片人成网| 香蕉免费看一区二区三区| 亚洲天堂久久精品| 最近中文字幕无吗高清免费视频| 国产亚洲午夜精品| 久久亚洲国产午夜精品理论片| 亚洲综合免费视频| 豆国产96在线|亚洲| 国产精品亚洲片在线| 日韩版码免费福利视频| 国产精品亚洲二区在线| 亚洲午夜无码久久久久| 黄色片在线免费观看| 成人免费视频一区二区| 久久狠狠高潮亚洲精品|