在 <s:url> 操作属性中引用变量

问题描述 投票:0回答:3

所以,我在页面范围内设置了一个变量,例如:

<s:set name="targetAction" var="targetAction" value="%{'someActionName'}" />

我想在

"targetAction"
标签的操作属性中使用这个
<s:url>
变量。这可能吗?

我试过这样:

<s:url action="%{#targetAction}" />   

但不会评估操作属性,并将其设置为

"%{#targetAction}"
,而不是由
<s:set>
变量在
someActionName
标记中指定的值。

有什么建议吗?

编辑:

更正了双引号的拼写错误。

编辑2:

好吧,如果这很重要的话,我正在使用 Struts 2.1.3。无论如何,我打算在 JavaScript 变量中使用这个 URL,如下所示:

var targetAction = '<s:property value="%{#targetAction}" />';
var actionURL = '<s:url action="<my dynamic action name specified by the targetAction variable needs to be here>" />

是否有办法让它知道针对 action 属性提到的值是 JavaScript 变量,而不是字符串?我的意思是,在这种情况下如何转义 JavaScript 内容?

javascript jsp struts2 ognl struts-tags
3个回答
0
投票

是的,这是可能的。

name
标签的
<s:set>
属性已弃用,请改用
var

顺便说一句,此变量未在页面范围内设置,因为您没有使用

scope="page"
并且默认为操作范围。

您的

action
属性有拼写错误。

<s:set var="targetAction" value="%{'someActionName'}" />
<s:url action="%{#targetAction}" />

Javascript:

var targetAction = '<s:property value="%{#targetAction}" />';
var actionURL = '<s:url action="%{#targetAction}" />';

0
投票

您可能没有在标签中使用

alTSyntax
。尝试将其设置为
true
中的
struts.properties

### use alternative syntax that requires %{} in most places
### to evaluate expressions for String attributes for tags
struts.tag.altSyntax=true 

0
投票

在 Struts 2.3 中有效

            <c:set var="businessActionMapping" value="foo" scope="session"/>
            <s:form action="%{#session.businessActionMapping}"

您可能需要在 struts.properties 中设置 altSyntax=TRUE

© www.soinside.com 2019 - 2024. All rights reserved.