【问题标题】:Why can't access attribute in request?为什么无法访问请求中的属性?
【发布时间】:2013-04-02 03:29:16
【问题描述】:

我想访问request中的一些属性,例如request中的base属性, 以下是请求中的值的一部分

 request    ...base=/ecs, stack=com.opensymphony.xwork2.ognl.OgnlValueStack@11c4b31}, __cleanup_recursion_counter=1, .freemarker.RequestParameters=freemarker.ext.servlet.HttpRequestParametersHashModel@1c00cb4 ...

我使用<s:debug /><s:property value="%{#request.base}" /> 访问request 中的base 属性,但我的jsp 中没有显示任何内容。那为什么呢?

【问题讨论】:

    标签: struts2


    【解决方案1】:

    不知道你为什么需要这个,但只有baserequest 里面是.freemarker.TemplateModel 里面ScopesHashModel。所以你需要使用方法get 从那里获取东西。

    <s:property value="#request['.freemarker.TemplateModel'].get('base')" />
    

    试试这个:

    <s:property value="#request['javax.servlet.include.context_path']"/>
    

    更新

    如果您只需要上下文路径,请使用&lt;s:url&gt; 标签。

    <s:url value="/"/>
    

    【讨论】:

    • 它不起作用。我想在jsp中得到contextPath,我发现base的值和我的contextPath的值一样。我也可以使用&lt;%=request.getContextPaht()%&gt;,但是我不喜欢这种风格,我想通过OGNL表达式得到contextPath
    • 不,它也不起作用,也许我走错了方向。不支持通过OGNL获取contextPath
    • @HiwayChe:如果您只需要上下文路径,请使用&lt;s:url&gt; 标签。 &lt;s:url value="/" /&gt;
    【解决方案2】:

    如果您想访问请求参数,以下将起作用

    <s:property value="#parameters['base']"/>
    

    如果您想访问请求的属性,那么以下应该可以工作

    <s:property value="#request.base"/>
    

    <s:property value="#request['base']" />
    

    【讨论】:

    • 我已经在 J​​ava 1.7 上运行的 Tomcat1.6 中测试了上述内容,并且运行良好。有没有人遇到过这种情况不起作用的情况?只是因为投反对票而感到好奇??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2013-11-26
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多