所以,我在页面范围内设置了一个变量,例如:
<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 内容?
是的,这是可能的。
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}" />';
您可能没有在标签中使用
alTSyntax
。尝试将其设置为true
中的struts.properties
。
### use alternative syntax that requires %{} in most places
### to evaluate expressions for String attributes for tags
struts.tag.altSyntax=true
在 Struts 2.3 中有效
<c:set var="businessActionMapping" value="foo" scope="session"/>
<s:form action="%{#session.businessActionMapping}"
您可能需要在 struts.properties 中设置 altSyntax=TRUE