您的位置:首页 > Web前端 > JavaScript

webx返回json类型数据

2016-01-25 16:06 716 查看
(1)pipeline配置

<when>
<!-- 创建JSON,无模板,无layout。 -->
<pl-conditions:target-extension-condition extension="json" />
<pl-valves:performScreen />
<pl-valves:renderResultAsJson />
</when>


(2)screen代码

public class SayHello2 {
/** 英文 */
public Hello doEnglish() {
return new Hello("English", "Hello");
}

/** 中文 */
public Hello doChinese() {
return new Hello("Chinese", "你好");
}

public static class Hello {
private String language;
private String howToSay;

public Hello(String language, String howToSay) {
this.language = language;
this.howToSay = howToSay;
}

public String getLanguage() {
return language;
}

public void setLanguage(String language) {
this.language = language;
}

public String getHowToSay() {
return howToSay;
}

public void setHowToSay(String howToSay) {
this.howToSay = howToSay;
}
}
}


(3)原理

与普通的servlet返回json一样,先设置contentType="application/json",再写入response即可

在RenderResultJson中:

public void invoke(PipelineContext pipelineContext) throws Exception {
TurbineRunData rundata = getTurbineRunData(request);

if (!rundata.isRedirected()) {
Object resultObject = consumeInputValue(pipelineContext); //取出返回值

if (resultObject == null) {
return;
}

String javascriptVariable = getJavascriptVariable();
boolean outputAsJson = javascriptVariable == null;

if (outputAsJson) {
// output as json
response.setContentType(getContentType()); //设置contentType='application/json'
} else {
// output as javascript
response.setContentType(getJavascriptContentType());
}

PrintWriter out = response.getWriter();
String jsonResult = JSON.toJSONString(resultObject); //序列化

if (outputAsJson) {
out.print(jsonResult); //写入response
} else {
out.print("var ");
out.print(javascriptVariable);
out.print(" = ");
out.print(jsonResult);
out.print(";");
}
}

pipelineContext.invokeNext();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: