将layout-render的输出设置为变量(条纹)

时间:2018-03-06 22:05:02

标签: java jsp jstl stripes

我正在尝试重用已在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。

1 个答案:

答案 0 :(得分:1)

默认情况下,使用<c:set ... />设置的变量具有page范围,并且在该页面之外无法使用。

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

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