Closed 2betop closed 10 years ago
在尝试用 jello 开发项目的时候遇到了一个问题,也有不少同学也反应过,就是如何快速的实现 json_encode 功能。
很多时候,都需要把后端的数据 object 转换成 json 格式给 js 使用。但是 velocity 里面又没有对应的方法。
如是今天研究了一把,目前想到了一个比较合理的方法就是通过 velocity tools 提供,暂时先把方法贴出来,后续补充到 jello 的 jar 里面去。
新建一个 tool 类
package com.baidu.fis.velocity.util; import com.alibaba.fastjson.JSON; import org.apache.velocity.tools.config.DefaultKey; @DefaultKey("jello") public class jelloTool { public static String jsonEncode(Object obj) { return JSON.toJSONString(obj); } }
在 spring 的配置中启用
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="cache" value="true"/> <property name="prefix" value=""/> <property name="suffix" value=".vm"/> <property name="exposeSpringMacroHelpers" value="true"/> <property name="contentType" value="text/html;charset=UTF-8" /> <property name="attributesMap"> <map> <entry key="esc"><bean class="org.apache.velocity.tools.generic.EscapeTool"/></entry> <entry key="render"><bean class="org.apache.velocity.tools.generic.RenderTool" /> </entry> <entry key="jello"><bean class="com.baidu.fis.velocity.util.jelloTool" /> </entry> </map> </property> </bean>
这样就可以在模板中这么使用。
<script> var user = $jello.jsonEncode($user); console.log(user); </script>
在尝试用 jello 开发项目的时候遇到了一个问题,也有不少同学也反应过,就是如何快速的实现 json_encode 功能。
很多时候,都需要把后端的数据 object 转换成 json 格式给 js 使用。但是 velocity 里面又没有对应的方法。
如是今天研究了一把,目前想到了一个比较合理的方法就是通过 velocity tools 提供,暂时先把方法贴出来,后续补充到 jello 的 jar 里面去。
实现步骤
新建一个 tool 类
在 spring 的配置中启用
这样就可以在模板中这么使用。