Java 使用Struts2 s:使用getText()设置变量

Java 使用Struts2 s:使用getText()设置变量,java,jsp,struts2,ognl,valuestack,Java,Jsp,Struts2,Ognl,Valuestack,将Struts2与JSP一起使用。以下代码可以正常工作: <s:if test="foo == bar"> <s:set var="keyValue">message.string1</s:set> </s:if> <s:else> <s:set var="keyValue">message.string2</s:set> </s:else> <s:text name="%{k

将Struts2与JSP一起使用。以下代码可以正常工作:

<s:if test="foo == bar">
    <s:set var="keyValue">message.string1</s:set>
</s:if>
<s:else>
    <s:set var="keyValue">message.string2</s:set>
</s:else>

<s:text name="%{keyValue}"/>
问题是,我无法在上面的
getText()
调用中解决
%{keyValue}
问题,无论我尝试什么语法:
getText('{keyValue}')
getText(%{keyValue})
getText(keyValue)
getText('keyValue')
它最终被计算为null。这是我的语法错误还是根本无法做到?如果必须的话,我知道我可以回去使用
,在每个下面都有一个提交标签:

<s:if test="foo == bar">
    <s:submit value="getText('message.string1')" ../>
</s:if>
<s:else>
    <s:submit value="getText('message.string2')" ../>
</s:else>


…但是如果可能的话,我希望避免重复。

虽然在大多数情况下普通的
keyValue
会起作用,但最好在
标记的
var
值前面加上
。 在整个表达式中只应使用一对
%{}

<s:submit value="%{getText(#keyValue)}" />

虽然普通的
keyValue
在大多数情况下都可以工作,但最好在
标记的
var
值前面加上
。 在整个表达式中只应使用一对
%{}

<s:submit value="%{getText(#keyValue)}" />


试试
试试
虽然普通键值在大多数情况下都能工作
,那么你的意思是说在某些情况下它不能工作吗?@RomanC例如在这里
-不能工作。
虽然普通键值在大多数情况下都能工作
,那么,你是说有些情况下它不起作用吗?@romac例如,在这里
-不起作用。