<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件是對(duì)質(zhì)量的不懈追求

    struts2 親密接觸 json(json result type)

    最近使用jquery,ajax調(diào)用后臺(tái)服務(wù)非常需要一個(gè)json返回類(lèi)型,網(wǎng)上只有一個(gè)可用的插件,叫jsonplugin 。但是測(cè)試了一下,兩個(gè)版本居然都有錯(cuò)誤,而且通過(guò)文檔知道,它的使用還是相對(duì)復(fù)雜的,需要配置哪個(gè)對(duì)象需要轉(zhuǎn)換,那些對(duì)象不需要。不難想象,通常我們只需要將一個(gè)對(duì)象轉(zhuǎn)換成json格式,如果數(shù)據(jù)多,大不了都塞到一個(gè)對(duì)象里。
    這樣說(shuō)起來(lái),倒不如棄配置,轉(zhuǎn)而采用規(guī)則,規(guī)定action中如果需要為ajax提供服務(wù)器端服務(wù),必須定義一個(gè)名字叫json的成員類(lèi),類(lèi)型當(dāng)然是最通用的Object。然后實(shí)現(xiàn)一個(gè)Result,在value stack中,找到名字叫json的對(duì)象,把它序列化成json串寫(xiě)回客戶(hù)端就ok了。

      注意:如果json的實(shí)際類(lèi)型是String,這個(gè)String必須符合json語(yǔ)法規(guī)范。Map List之類(lèi)的就無(wú)所謂,直接用就是了

      Result代碼如下:

    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.Result;
    import com.opensymphony.xwork2.util.ValueStack;
    import net.sf.json.JSONObject;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.apache.struts2.StrutsStatics;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;

    public class JSONResult implements Result {
       
        private static final Log log = LogFactory.getLog(JSONResult.class);

        
    public void execute(ActionInvocation invocation) throws Exception {
            ActionContext actionContext 
    = invocation.getInvocationContext();
           
            HttpServletResponse response 
    = (HttpServletResponse) actionContext
                    .get(StrutsStatics.HTTP_RESPONSE);

            
    try {
                String json;
                Object jsonObject;

                
    // generate JSON
               
                ValueStack stack 
    = invocation.getStack();
                jsonObject 
    = stack.findValue("json");
                json 
    = JSONObject.fromObject(jsonObject).toString();
               
                log.debug(json);
               
                response.setContentType(
    "text/xml;charset=utf-8");
                response.getWriter().write(json);

            } 
    catch (IOException exception) {
                log.error(exception.getMessage(), exception);
                
    throw exception;
            }
        }

    }
    struts配置如下:
      <result-types>
       
    <result-type name="json" class="JSONResult"/>
      
    </result-types>

    <action  >
        
    <result name="ajax" type="json" />
    </action>

    action部分代碼:
       

        
    private Object json;
        
    public Object getJson() {
            
    return json;
        }

        
    public void setJson(Object json) {
            
    this.json = json;
        }

    posted on 2009-05-14 15:20 BlakeSu 閱讀(5107) 評(píng)論(2)  編輯  收藏

    評(píng)論

    # re: struts2 親密接觸 json(json result type) 2011-06-15 00:53 沒(méi)

    哈哈,謝謝吖!!!對(duì)幫助很大啊!!  回復(fù)  更多評(píng)論   

    # re: struts2 親密接觸 json(json result type) 2014-11-24 16:19 zhaobh

    很好啊  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91亚洲国产成人精品下载| 亚洲国产精品无码中文lv| 18禁美女裸体免费网站| 亚洲一区二区观看播放| 久久99亚洲综合精品首页| aⅴ免费在线观看| 立即播放免费毛片一级| 亚洲小视频在线观看| 宅男666在线永久免费观看| av永久免费网站在线观看| 亚洲制服丝袜中文字幕| 在线精品亚洲一区二区小说 | 久久久精品视频免费观看| 精品亚洲成AV人在线观看| 国产免费131美女视频| 日韩精品免费在线视频| 国产亚洲精彩视频| 亚洲系列中文字幕| 中文字幕无码精品亚洲资源网| 99久久久精品免费观看国产| 国产精品免费在线播放| 亚洲AV无码专区在线观看成人| 亚洲AV电影院在线观看| www.亚洲色图| 成年人免费视频观看| 日本免费大黄在线观看| 一级成人a免费视频| 亚洲国产精华液2020| 亚洲午夜精品在线| 亚洲av永久无码制服河南实里| 国产大片91精品免费看3| 久久久久久国产精品免费无码| 草久免费在线观看网站| 亚洲AV日韩综合一区尤物| 久久精品国产亚洲AV高清热 | 久久亚洲精品中文字幕| 国产综合亚洲专区在线| 四虎永久成人免费| 成全高清视频免费观看| 波多野结衣在线免费视频| 男人都懂www深夜免费网站|