所以我在页面范围中有一个变量集,如:
<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内容?
答案 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