Struts2类型转换
类型转换问题convertToString()始终不执行
转化器:
public class DateConverter extends StrutsTypeConverter { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @Override @SuppressWarnings("rawtypes") public Object convertFromString(Map context, String[] values, Class toClass) { Date date = null; try { date = sdf.parse(values[0]); } catch (ParseException e) { e.printStackTrace(); } System.out.println("fromstring:"+date); return date; } @Override @SuppressWarnings("rawtypes") public String convertToString(Map context, Object o) { Date d =(Date)o; String date = sdf.format(d); System.out.println("tostring:"+date); return date; } }
属性文件:PersonAction-conversion.properties
person.birthday=com.jqb.struts2lab01.converter.DateConverter
Person类:
public class Person { private String name; private int age; private Date birthday; ... setter/getter }
Action:
public class PersonAction extends ActionSupport{ private Person person; public String execute() { return SUCCESS; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } }
页面:person.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <br><s:property value="person.name"/> <br><s:property value="person.age"/> <br><s:property value="person.birthday" /> <form action="personAction" method="post"> <table> <tr><td>name:</td><td><input type="text" name="person.name"/></td></tr> <tr><td>age:</td><td><input type="text" name="person.age"/></td></tr> <tr><td>birthday:</td><td><input type="text" name="person.birthday"/>格式必须为:1998-1-1</td></tr> <tr><td><input type="reset" value="重置"></td><td><input type="submit" value="提交"></td></tr> </table> </form> </body> </html>
我就弄不懂了 convertFromString可以正常执行 为什么convertToString就执行不到呢
难道和struts2的默认类型转换器有关么
我发现这个Date类型转换器加和不加没区别只要日期格式出入正确就可以显示
奇了怪了 求大师指点迷津
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
有理解错误的请纠正下
回复
把那一半正常的改成不正常的,你试试?会起作用么?
回复
我对单个Date属性测试过OK 没问题 但是放到复杂类型中就不执行convertToString()方法了,很奇怪的 maybe是bug?
回复
要不就是不处理,要不就是用的BeanUtils的默认处理。既然有beanutils的包,那么,应该不会自己去画轮子的。
回复
其实struts2的默认转换器配合他的标签已经很强大了,没必要自己转换器,只是想测试下功能和原理,还是挺希望能解决这个问题的
回复
我的意思是,struts应该是用的beanutils的转换器,那么,只要在beanutils里面注册。不过,楼下给你方案了。我怎么看怎么觉得就是用beanutils的转换器,呵呵。
那个配置文件是你自己写的???
你写了转换器,有注册到它所使用的里面么?这种转换貌似是BeanUtils包里做的吧。
ConvertUtils.register
试试这个?好多年不用struts了。
我试试看,我感觉struts2太聪明了
果然是这样,加个全局转换器就可以了,struts2跳过了我写的方法用自己的了,谢谢了
再记录下,页面显示的时候应该是Struts2的标签调用了自身的转换器,而没有再去找之前Action对应的转换器,因为只是一个Date类型的简单数据,而不是自定义的对象,so....