0

「名前」プロパティを単純な文字列データとして保存すると、次のコードが機能しますが、「名前」を {"en":"White Rice","cn":"白米", "th":"ข้าวขาว"}、およびロケール言語に従って名前の値を表示します。どのようにできるのか?

<s:iterator value="categorylist">
    <li class="mn_menu-active">
        <a href="#"> 
              <span><s:property value="name" /></span>

              <div class="clear"></div>
              </a>
              <ul>
                <s:iterator value="children">
                    <li>
                        <a href="#">
                         <span class="ms_txt"><s:property value="name" /></span>
                         <div class="clear"></div>
                         </a>
                     </li>

                </s:iterator>
              </ul>

          </li>
</s:iterator>
4

1 に答える 1

0

それを処理するクラスを実装していると聞いてください。

パッケージ com.tsd.json;

import javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse をインポートします。

org.apache.struts2.ServletActionContext をインポートします。

com.opensymphony.xwork2.ActionContext をインポートします。com.opensymphony.xwork2.util.ValueStack をインポートします。

java.util.Locale をインポートします。

net.sf.json.JSONObject をインポートします。

public class LocaleHandler {

public static String Locale(String name)
{
    ValueStack stack = ActionContext.getContext().getValueStack();


    String result="";
    HttpServletRequest request = ServletActionContext.getRequest();
    Locale locale = (java.util.Locale)request.getSession().getAttribute("WW_TRANS_I18N_LOCALE");
    String jsonData =(String)stack.findValue(name);
    JSONObject json=JSONObject.fromObject(jsonData); 
     if(locale ==null)
     {
         HttpServletResponse response=ServletActionContext.getResponse();
         locale=response.getLocale();
     }
     if (locale instanceof Locale)
     {
         result= json.getString(locale.getLanguage()+"_"+locale.getCountry());
     }
    return result;
}

}

jsp を次のように変更します。

 <s:iterator value="categorylist">
              <li class="mn_menu-active">
                  <a href="#"> 
                     <span>
                       <%=LocaleHandler.Locale("name") %>
                     </span>

                     <div class="clear"></div>
                  </a>
                  <ul>
                    <s:iterator value="children">
                        <li>
                            <a href="#">
                             <span class="ms_txt"> <%=LocaleHandler.Locale("name") %></span>
                             <div class="clear"></div>
                             </a>
                         </li>

                    </s:iterator>
                  </ul>

              </li>
          </s:iterator>
于 2013-11-05T06:07:35.110 に答える