Webx Json输出源码
来源:互联网 发布:手机淘宝2016旧版本 编辑:程序博客网 时间:2024/05/14 09:14
Pipeline.xml
<when> <!-- 创建JSON,无模板,无layout。 --> <pl-conditions:target-extension-condition extension="json" /> <pl-valves:performScreen /> <pl-valves:renderResultAsJson /> </when>
PerformScreenValue
public void invoke(PipelineContext pipelineContext) throws Exception { TurbineRunData rundata = getTurbineRunData(request); // 检查重定向标志,如果是重定向,则不需要将页面输出。 if (!rundata.isRedirected()) { setContentType(rundata); Object result = null; try { result = performScreenModule(rundata); } finally { setOutputValue(pipelineContext, result); } } pipelineContext.invokeNext(); } /** 执行screen模块。 */ protected Object performScreenModule(TurbineRunData rundata) { ModuleFinder finder = new ModuleFinder(rundata.getTarget()); // 如果设置了template,则默认打开layout rundata.setLayoutEnabled(true); try { Module module = finder.getScreenModule(); // 当指定了templateName时,可以没有的screen module,而单单渲染模板。 // 这样就实现了page-driven,即先写模板,必要时再写一个module class与之对应。 if (module != null) { // 将event传入screen。 ScreenEventUtil.setEventName(rundata.getRequest(), finder.event); try { if (module instanceof ModuleReturningValue) { return ((ModuleReturningValue) module).executeAndReturn(); } else { module.execute(); } } finally { ScreenEventUtil.setEventName(rundata.getRequest(), null); } } else { if (isScreenModuleRequired()) { throw new ModuleNotFoundException("Could not find screen module: " + finder.moduleName); } } } catch (ModuleLoaderException e) { throw new WebxException("Failed to load screen module: " + finder.moduleName, e); } catch (Exception e) { throw new WebxException("Failed to execute screen: " + finder.moduleName, e); } return null; }
RenderResultAsJsonValve
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()); } else { // output as javascript response.setContentType(getJavascriptContentType()); } PrintWriter out = response.getWriter(); String jsonResult = JSON.toJSONString(resultObject); if (outputAsJson) { out.print(jsonResult); } else { out.print("var "); out.print(javascriptVariable); out.print(" = "); out.print(jsonResult); out.print(";"); } } pipelineContext.invokeNext(); }
0 0
- Webx Json输出源码
- Webx源码研读心得
- Webx mvc 源码
- webx返回json类型数据
- webX
- Webx
- webx
- webx- webx framework
- Webx-webx turbine
- JSON 源码
- webx解析
- Webx SpringExt
- webx概念
- WebX基础知识
- webx学习
- webx 学习
- webx入门
- webx小结
- android EditText 监听复制粘贴等操作
- AlertDialog的一些相关问题
- Search in Rotated Sorted Array
- 【ACM】:ACM集训队论文合集
- Android学习笔记二十四之ListView列表视图二
- Webx Json输出源码
- Android 3.0 Hardware Acceleration
- java输出系统时间
- spring MVC 框架的搭建(myeclipse +maven)--(下)
- uitableview去掉最后一行cell的底线
- RobotArt-气缸去毛刺案例
- 初学ML笔记N0.4——梯度下降的优化
- c#_索引器(Indexer)
- Android App 分享功能实现