2013-11-04 33 views
0

後續代碼工作當我保存「名」屬性一樣簡單字符串數據, 但現在我想保存「名稱」作爲JSON數據,如 {「恩」:」白米「,」cn「:」白米「,」th「:」ข้าวขาว「},並根據區域語言顯示名稱值。我能怎麼做?如何解析JSON財產strut2

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

回答

0

聽到我實現了一個類來處理它。

package com.tsd.json;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack;

import java.util.Locale;

import net.sf.json.JSONObject;

公共類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>