﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-insomnia,politic,proficient ,sensible.-随笔分类-freemark</title><link>http://www.blogjava.net/youngturk/category/51836.html</link><description>The world is a fine place , and worth fighting for it.</description><language>zh-cn</language><lastBuildDate>Sat, 04 Aug 2012 01:04:00 GMT</lastBuildDate><pubDate>Sat, 04 Aug 2012 01:04:00 GMT</pubDate><ttl>60</ttl><item><title>当session长时间不登录失效问题,再重登录出现两个嵌套登录页面</title><link>http://www.blogjava.net/youngturk/archive/2012/08/02/384586.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 02 Aug 2012 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/08/02/384586.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/384586.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/08/02/384586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/384586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/384586.html</trackback:ping><description><![CDATA[<p>&lt;script&nbsp;&nbsp; language="javascript"&gt;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (top != window)&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top.location.href = window.location.href;&nbsp;&nbsp; <br />&nbsp; &lt;/script&gt;&nbsp;</p><img src ="http://www.blogjava.net/youngturk/aggbug/384586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-08-02 11:11 <a href="http://www.blogjava.net/youngturk/archive/2012/08/02/384586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2+Freemarker+Ognl中解析request请求的方法</title><link>http://www.blogjava.net/youngturk/archive/2012/06/08/380373.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Fri, 08 Jun 2012 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/06/08/380373.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/380373.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/06/08/380373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/380373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/380373.html</trackback:ping><description><![CDATA[<div>1.首先struts2为我们定义了几个可以在ftl中使用的变量，都放在了org.apache.struts2.views.util.ContextUtil里面，具体怎么做的，还没有看。<div><div id="code0"><ol><li>public static final String REQUEST = "request";<br /> </li><li><br /> </li><li>public static final String REQUEST2 = "request";<br /> </li><li><br /> </li><li>public static final String RESPONSE = "response";<br /> </li><li><br /> </li><li>public static final String RESPONSE2 = "response";<br /> </li><li><br /> </li><li>public static final String SESSION = "session";<br /> </li><li><br /> </li><li>public static final String BASE = "base";<br /> </li><li><br /> </li><li>public static final String STACK = "stack";<br /> </li><li><br /> </li><li>public static final String OGNL = "ognl";<br /> </li><li><br /> </li><li>public static final String STRUTS = "struts";<br /> </li><li><br /> </li><li>public static final String ACTION = "action";</li></ol></div><em>复制代码</em></div>这里定义了我们常用的${base}、${stack}等。<br /> 注意：这里面定义都是对应的类。例如stack对应的就是ValueStack，所以我们在页面可以使用<br /> ${stack.findValue('@com.Blog@PERMIT_COMMENT_BY_NONE')}.这就是方法问ValueStack的findValue方法。我们还可以使用<br /> ${request}来使用HttpServletRequest类，（只能）然后调用里面的方法。例如${request.getAttribute("aaa")}等。<br /> <br /> 2.通过使用struts2我们知道，页面传递过来的值都是保存在ActionContext中的值栈里面的，其中这个值栈是ActionContext 的根，因此可以不用加&#8220;#&#8221;访问。而在ActionContext中还封存了其他的东西，比如request，session、parameters 等。。但是一定要注意。这里的request、session、parameters等不是HttpServletRequest那些类，而是一个 map。而且进行了重新组装，例如request封装了 ServletActionContext.getRequest().setAttribute("aaa", "bbb");信息<br /> 我们通过Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot())就可以取到值。当然request这个map中还有一些其他的东西，例如我的打印结果是；<br /> System.out.println(Ognl.getValue("#request", context.getContextMap(),new Object()));通过打印可以看出来<br /> 这些可以参考<br /> http://hi.baidu.com/maml897/blog/item/e6d962c3d55e6338e5dd3bb0.html。<br /> <br /> 3.我们知道 ftl页面 ${}写的都是 ognl表达式，而且都是 根里面的 ，所以不用加上&#8220;#&#8221;，但是 要访问ActionContext里面，不是根的request怎么办呢？<br /> 我是这样用的 ${#request}发现时错误的，后来查找资料发现<br /> 使用<br /> ${Request["a"]}<br /> ${RequestParameters["a"]}<br /> ${Session ["a"]}<br /> ${Application&nbsp;&nbsp;["a"]}<br /> 或者${Application.myApplicationAttribute}<br /> ${Session.mySessionAttribute}<br /> ${Request.myRequestAttribute}<br /> ${Parameters.myParameter}<br /> 千万要注意的是<br /> Application、Session、Request、Parameters都是map。都是大写的，没有写成${#request}这个我也不知道为什么，<br /> 在页面 用了大写。<br /> 可以参考freemarker.ext.servlet.FreemarkerServlet<br /> 在action里使用<br /> System.out.println(Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot()));<br /> <br /> 刚才发现 在jsp页面里访问 actionContext的内容<br /> ${request}<br /> 这样写 是访问actionContext的request，而不是 struts2内定的<br /> 用struts2标签<br /> &lt;x:property value="#request.toString()"/&gt;<br /> 就要加"#"</div><img src ="http://www.blogjava.net/youngturk/aggbug/380373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-06-08 18:58 <a href="http://www.blogjava.net/youngturk/archive/2012/06/08/380373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一个宏定义 &lt;#macro statusInfo  main=main&gt;</title><link>http://www.blogjava.net/youngturk/archive/2012/05/30/379509.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Wed, 30 May 2012 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/05/30/379509.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/379509.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/05/30/379509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/379509.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/379509.html</trackback:ping><description><![CDATA[&lt;#macro statusInfo&nbsp; main=main&gt; statusInfo表示宏的名字，左边的main表示型参(为以后在宏中应用)，右边的main表示实参(也就是java实际返回的变量名字)<br />&lt;/#macro&gt;<img src ="http://www.blogjava.net/youngturk/aggbug/379509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-05-30 09:11 <a href="http://www.blogjava.net/youngturk/archive/2012/05/30/379509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>