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

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

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

    Struts2+Freemarker+Ognl中解析request請(qǐng)求的方法

    1.首先struts2為我們定義了幾個(gè)可以在ftl中使用的變量,都放在了org.apache.struts2.views.util.ContextUtil里面,具體怎么做的,還沒(méi)有看。
    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";
    復(fù)制代碼
    這里定義了我們常用的${base}、${stack}等。
    注意:這里面定義都是對(duì)應(yīng)的類(lèi)。例如stack對(duì)應(yīng)的就是ValueStack,所以我們?cè)陧?yè)面可以使用
    ${stack.findValue('@com.Blog@PERMIT_COMMENT_BY_NONE')}.這就是方法問(wèn)ValueStack的findValue方法。我們還可以使用
    ${request}來(lái)使用HttpServletRequest類(lèi),(只能)然后調(diào)用里面的方法。例如${request.getAttribute("aaa")}等。

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

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

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

    posted on 2012-06-08 18:58 youngturk 閱讀(1550) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): freemark

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

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結(jié)構(gòu)
    4 口語(yǔ)英語(yǔ)

    常用鏈接

    留言簿(6)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    相冊(cè)

    EJB學(xué)習(xí)

    Flex學(xué)習(xí)

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产精品入口麻豆免费观看| 亚洲AV网一区二区三区| www免费黄色网| 亚洲系列国产精品制服丝袜第| 日韩中文字幕在线免费观看| 免费无码AV片在线观看软件| 在线免费观看h片| 成人无码区免费A∨直播| 一二三四在线观看免费中文在线观看| 精品在线视频免费| 亚洲人成77777在线播放网站不卡| 亚洲成av人片在线看片| 亚洲最大成人网色香蕉| 久久久久久亚洲精品中文字幕| 亚洲gv猛男gv无码男同短文| 亚洲ⅴ国产v天堂a无码二区| 亚洲黄色网址大全| 中文字幕亚洲日本岛国片| 免费高清在线爱做视频| 日本免费网站在线观看| 亚洲国产精品丝袜在线观看| 中文字幕精品无码亚洲字| 国产AV无码专区亚洲A∨毛片| 亚洲第一黄片大全| 丝袜熟女国偷自产中文字幕亚洲| 国产在线观看免费不卡 | 亚洲国产视频久久| 亚洲精品人成网线在线播放va| 亚洲欧洲自拍拍偷综合| 精品亚洲AV无码一区二区 | 成年女人午夜毛片免费看| 最近免费中文在线视频| 一二三四免费观看在线视频中文版| 95老司机免费福利| 国产麻豆成人传媒免费观看| 两个人看的www免费高清 | 理论亚洲区美一区二区三区| eeuss影院免费92242部| 99久热只有精品视频免费看| 毛片大全免费观看| 中文国产成人精品久久亚洲精品AⅤ无码精品 |