【问题标题】:Setting output of layout-render to a variable (stripes)将布局渲染的输出设置为变量(条纹)
【发布时间】:2018-03-06 22:05:01
【问题描述】:

我正在尝试重用已在 jsp 中设置并在 Stripes 布局渲染中使用的变量。

主页:/index.jsp

布局渲染页面:/jsp/widgets/signin/oAuthUrl.jsp

我的 /jsp/widgets/signin/oAuthUrl.jsp 有一个名为 ${oauth_url} 的 c:set 变量。但是当我通过 s:layout-render name="/jsp/widgets/signin/oAuthUrl.jsp" 调用布局渲染页面时,我希望能够使用其中的任何变量在那里,就好像我包含了那个脚本一样。但我不能在 index.jsp 中使用 ${oauth_url}。

我什至尝试过这样做,不出所料地不起作用:

<c:set var="oauth_url" value="<s:layout-render name="/jsp/widgets/signin/oAuthUrl.jsp" 
buttonType="signup"/>"/>
<s:link href="${oauth_url}">

如何重用在 /jsp/widgets/signin/oAuthUrl.jsp 中设置的变量?基本上,我怎样才能使它成为 index.jsp 页面的全局,以便它可以在其他地方使用?

如果我只想使用 /jsp/widgets/signin/oAuthUrl.jsp 中声明的 c:set 值,我应该使用不同的标签而不是 s:layout-render 导入吗?我仍然想给它传递一些属性——比如 buttonType。

【问题讨论】:

  • 不确定您到底想做什么,但您是否尝试将scope="request" 添加到&lt;c:set ... /&gt; 标记?
  • 我要做的就是使用 index.jsp 中的一个变量,该变量是在我的 /jsp/widgets/signin/oAuthUrl.jsp 文件中使用 c:set 标记设置的。似乎我在布局渲染中调用的文件中设置的任何内容在全局范围内都不可用。我会试试你的建议。
  • @acdhirr 看起来有效!回答以下问题,以便我标记为已解决。

标签: java jsp jstl stripes


【解决方案1】:

默认情况下,使用&lt;c:set ... /&gt; 设置的变量具有page 范围,并且在该页面之外不可用。

要使变量对请求的嵌套层次结构更高的其他模板可用,请使用request 范围:

<c:set var="…" value="…" scope="request" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多