2012-08-08 74 views
1

我一直在查找此信息一段時間,但似乎沒有太多在線。Struts2從jsp使用屬性標記訪問ActionContext

爲了簡單起見,我們如何通過<s:property/>標籤訪問ActionContext

基本上我想要得到的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}"/> 

多的組合。

謝謝

回答

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"/> 

我希望它有幫助。

+0

我打算從Action上下文或簡單的jsp <%= request.getLocale()%>中獲取來自com.opensymphony.xwork2.ActionContext.locale的值。 你提供給我的那個人會取代價值堆棧中的那個。任何線索如何獲得其他價值? – AbSoLution8 2012-08-09 19:14:46

+0

我編輯了我的答案:) – Pigueiras 2012-08-10 06:11:39

+0

如果您想在s:if test =「%{locale.toString()=='fa_IR')中檢查它,還必須使用locale.toString()。 – 2013-11-16 11:59:41

2

更直接的方法是說:

<s:property value="@com.opens[email protected]().locale"/> 

對於這項工作的靜態方法調用需要在struts.xml中啓用

<struts> 
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 
    ... 
</struts> 
1

你可以使用它作爲:

<%=session.getAttribute("WW_TRANS_I18N_LOCALE") %> 

這將直接從會話中獲得語言環境