FreeMarker里如何像jsp一样用<% %>调用java代码,如果不能,有什么方法可以实现

FreeMarker里如何像jsp一样用<% %>调用java代码,如果不能,有什么方法可以实现

图片[1]-FreeMarker里如何像jsp一样用<% %>调用java代码,如果不能,有什么方法可以实现-学吧号不能使用java代码,只能使用el表达式,来输出展示数据..freemarker 的原则或初衷:数据+模板=输出模板就是 freemarker了,这样程序员就不能把大量java代码写入, 美工和程序员 工作就可以独立了

jquery.post(“url”,{},function(data),’json’);里面的data如何用java操作

图片[2]-FreeMarker里如何像jsp一样用<% %>调用java代码,如果不能,有什么方法可以实现-学吧号

1、引入包(本文中的包全部引自struts-2.1.8.1\lib):struts2-json-plugin-2.1.8.1.jar json-lib-2.1.jarcommons-collections-3.2.jarcommons-beanutils-1.7.0.jarcommons-lang-2.3.jarcommons-logging-1.0.4.jarezmorph-1.0.3.jar这7个包是返回json形式的数据必须的。因为json大量引用了Apache commons的包,所以要加入4个,commons包,除了commons的包外,还需要引入一个 ezmorph的包。

最后加入struts2必须的6个包: struts2-core-2.1.8.1.jar xwork-core-2.1.6.jarognl-2.7.3.jarfreemarker-2.3.15.jarcommons-fileupload-1.2.1.jarcommons-io-1.3.2.jar2、后台:1) Userinfo实体类代码public class UserInfo implements Serializable { private int userId; private String userName; private String password; get set方法略}2) Action类public class TestAction extends ActionSupport { private String message; //使用json返回单个值 private UserInfo userInfo; //使用json返回对象 private List userInfosList; //使用josn返回List对象 get set方法略 /*返回单个值*/ public String returnMsg(){ this.message = “成功返回单个值”; return SUCCESS; } /*返回UserInfo对象*/ public String returnUser(){ userInfo = new UserInfo(); userInfo.setUserId(10000); userInfo.setUserName(“刘栋”); userInfo.setPassword(“123456”); return SUCCESS; } /*返回List对象*/ public String returnList(){ userInfosList = new ArrayList<UserInfo>(); UserInfo u1 = new UserInfo(); u1.setUserId(10000); u1.setUserName(“张三”); u1.setPassword(“111111”); UserInfo u2 = new UserInfo(); u2.setUserId(10001); u2.setUserName(“李四”); u2.setPassword(“222222″); userInfosList.add(u1); userInfosList.add(u2); return SUCCESS; } }3) struts.xml(必须继承json-default、json-default继承自struts-default)<package name=”default” namespace=”/json” extends=”json-default”> <action name=”returnMsg” class=”com.testAction ” method=”returnMsg”> <result name=”success” type=”json”> <param name=”root”>validate</param></result> </action> <action name=”returnUser ” class=”com.testAction ” method=”returnUser “><result name=”success” type=”json”><param name=”includeProperties”> userInfo\.userId,userInfo\.userName,userInfo\.password</param> </result> </action><action name=”returnList” class=”com.testAction ” method=”returnList”> <result name=”success” type=”json”><param name=”includeProperties”> userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password</param></result> </action></package>3、前台:1) 页面引入jquery-1.4.2.js2) 代码如下:<script language=”javascript”> function getMsg(){ $.ajax({ url:’json/returnMsg.action’, type:’post’, dataType:’json’, success:function(data){ $(“#result”).html(data.message); } }); } function getUser(){ $(“# result “).html(“”); $.ajax({ url:’json/returnUser.action’, type:’post’, dataType:’json’, success:function(data){ $(“#result”).append(“用户ID:”+data.userInfo.userId+””) .append(“用户名:”+data.userInfo.userName+””) .append(“密码:”+data.userInfo.password+””); } }); } function getUserList(){ $(“# result “).html(“”); $.ajax({ url:’json/returnList.action’, type:’post’, dataType:’json’, success:function(data){ $.each(data.userInfosList,function(i,value){ $(“#result”).append(“第”+(i+1)+”个用户”) .append(“用户名:”+value.userName+””) .append(“密码:”+value.password+””); } } }); }</script><div id=”result”></div><input type=”button” value=”获得单个消息” onclick=”getMsg()”/><input type=”button” value=”获得用户信息” onclick=”getUser()”/><input type=”button” value=”获得用户列表” onclick=”getUserList()”/>4、只要继承extends=”json-default”,result type设置成json之后,容器会把action的属性自动封装到一个json对象中(json拦截器来做),然后调用ajax的callback方法. 返回json数据 5、includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。

如:输出UserInfo的所有属性及UserInfo的userName属性<result type=”json”> <param name=”includeProperties”> userInfo.*, userInfo \. userName </param></result> 6、excludeProperties 参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同includeProperties 7、输出一个JSON List列表<result name=”success” type=”json”> <param name=”includeProperties”> userInfosList\[\d+\]\.userName,userInfosList\[\d+\]\.password</param> </result> 其中userInfosList是action中的一个List类型的属性,userInfosList \[\d+\]\. userName表示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)。8、为什么要用includeProperties或excludeProperties 参数:主要是为了过滤掉接口,pojo的set、list、其它对象等不需要的数据防止循环取其它关联对象或找不到接口。如果不配置,默认是处理 action中的所有属性,如果action中有接口注入,json拦截器可能找不到接口而返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其它对象有list、set,其返回结果相当庞大,有可能是死循环而无法返回 。如果不用<param name=”includeProperties”>或其他方式进行json数据过滤,通过debug你会发现前台返回的json字符串,是把 action中的所有属性全部转化成json字符串返回给客户端(包括service接口、pojo所有属性及有关联的pojo。

有时候根本返回不了结果,也不报错,后台执行了,但前台执行不到callback function,这主要是因为找不到接口或者关联的pojo太多,造成死循环),一般情况下用的最多的就是root、 includeProperties 和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。

freemarker 的 if 和list 怎么写

图片[3]-FreeMarker里如何像jsp一样用<% %>调用java代码,如果不能,有什么方法可以实现-学吧号你写的语法不对,估计是一些教程上的格式说明你照搬来用了,我帮你改了一下:<#if contactListSize?string.number==1>…</#if> <#list contactList as receiveContactInfo>…</#list>

jQuery wordexport导出word 手机打开乱码

图片[4]-FreeMarker里如何像jsp一样用<% %>调用java代码,如果不能,有什么方法可以实现-学吧号

本次导出还是使用之前freemarker模板导出word,这次出现手机端打不开是因为手机上的wps版本比较低,因为亲测ios和安卓系统都能打开,但是wps10版本的打开是源码或者乱码,所以找到了两种解决方案可以在低版本wps和microsoft office的手机上打开。因为是省厅内网,手机上的应用是统一管理的,就当与内网里面有个应用市场,不是你说更新就更新,而且要提交一大串的申请。

先看之前的两种方式导出word:1.freemarker模板导出word循环图片表格详细教程这个可以电脑端 ios和安卓高版本的wps打开。

2.freemarker模板导出带表格word详细教程这个可以在电脑端和ios打开,安卓手机不管什么wps版本打开都乱码。解决思路:其实上述的方法最终并不是纯正的word,只是xml格式的word文档,咱们需要吧生成后的文档转换成真正的word格式,才能在老版本的wpsh和microsoft office等应用打开。解决办法还是有好几种的。解决办法:一:利用jacob动态链接库进行转存,此方法只适用于winodws,不适用Linux。

THE END
喜欢就支持一下吧
点赞6
温馨提示:

1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我QQ:243371741,会尽快给予删除处理!