我一直在查找这些信息,但似乎并没有太多在线。
为简单起见,我们如何通过ActionContext
代码访问<s:property/>
?
基本上我想获得com.opensymphony.xwork2.ActionContext.locale
(当前区域设置)
我尝试了所有这些,但似乎没有工作
<s:property value="#com.opensymphony.xwork2.ActionContext.locale"/>
<s:property value="${#com.opensymphony.xwork2.ActionContext.locale}"/>
<s:property value="%{#com.opensymphony.xwork2.ActionContext.locale}"/>
以及这些的更多组合。
由于
答案 0 :(得分:3)
您是否尝试过locale.toString()
?
Locale: <s:property value='locale.toString()'/>
修改强>
如您所愿,ActionContext
的值将此值放在action
:
public class FooAction extends ActionSupport {
...
private String locale; // TODO: Getters and setters
...
@Override
public String execute () {
...
locale = ActionContext.getContext().getLocale().toString();
...
}
}
然后在您的jsp中,您可以使用locale
访问<s:property>
属性。
<s:property value="locale"/>
我希望它有所帮助。
答案 1 :(得分:2)
更直接的方法是:
<s:property value="@com.opensymphony.xwork2.ActionContext@getContext().locale"/>
为此,需要在struts.xml中启用静态方法调用
<struts>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
...
</struts>
答案 2 :(得分:1)
您可以将其用作:
<%=session.getAttribute("WW_TRANS_I18N_LOCALE") %>
这将直接从会话
获取语言环境