在s:url action属性中引用变量

时间:2013-05-02 07:02:15

标签: javascript jsp struts2

所以我在页面范围中有一个变量集,如:

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

我想在<s:url>标记的action属性中使用此“targetAction”变量。这可能吗?
我试过这种方式:

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

但不评估action属性,并将其设置为"%{#targetAction}",而不是<s:set>变量someActionName标记中指定的值。

有什么建议吗?

修改

用双引号纠正错字。

EDIT2: 好吧,如果重要的话,我正在使用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内容?

3 个答案:

答案 0 :(得分:0)

是的,这是可能的。 name标记的<s:set>属性已弃用,而是使用var

BTW此变量未在页面范围中设置,因为您没有使用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}" />';

答案 1 :(得分: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 

答案 2 :(得分:0)

在Struts 2.3中工作

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

您可能需要在struts.properties

中设置altSyntax = TRUE