struts2类型转换的总结

xiaoxiao2022-06-11  25

转换器:可以继承的类:DefaultTypeConverter、StrutsTypeConverter其中后者是常用的,继承于前者的 (1) 普通的类型转换:日期(局部类型转换) DateAction.java代码如下: package org.study.test.actions; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class DateAction extends ActionSupport { private Date date; public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String execute() throws Exception { System.out.println("-----------"+date+"----------"); return SUCCESS; } } date.jsp中只有一个输入域,输入日期格式的数据 DateAction-conversion.properties java.util.Date=org.study.test.utils.PointAction DateConverter.java package org.study.test.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; public class PointAction extends StrutsTypeConverter { private static String DATE_TIME_FOMART_IE = "yyyy-MM-dd HH:mm:ss"; private static String DATE_TIME_FOMART_FF = "yy/MM/dd hh:mm:ss"; @Override public Object convertFromString(Map context, String[] values, Class toClass) { Date date = null; String dateString = null; if (values != null && values.length > 0) { dateString = values[0]; if (dateString != null) { // 匹配IE浏览器 SimpleDateFormat format = new SimpleDateFormat(DATE_TIME_FOMART_IE); try { date = format.parse(dateString); } catch (ParseException e) { date = null; } // 匹配Firefox浏览器 if (date == null) { format = new SimpleDateFormat(DATE_TIME_FOMART_FF); try { date = format.parse(dateString); } catch (ParseException e) { date = null; } } } } return date; } @Override public String convertToString(Map context, Object o) { // 格式化为date格式的字符串 Date date = (Date) o; SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FOMART_FF); String dateTimeString = sdf.format(date); return dateTimeString; } } 其中action和actionNames-converter.properties应该在一个目录下 List类型转换: RegAction.java package org.study.test.actions; import java.util.List; import com.opensymphony.xwork2.ActionSupport; public class RegAction extends ActionSupport { private List<String> username; public List<String> getUsername() { return username; } public void setUsername(List<String> username) { this.username = username; } @Override public String execute() throws Exception { for (String s : username) { System.out.println(s); } return SUCCESS; } } reg.jsp <s:form action="reg" method="post" > <s:textfield name="username" label="username"></s:textfield> <s:textfield name="username" label="username1"></s:textfield> <s:submit></s:submit> </s:form> RegAction-conversion.properties Element_username = java.lang.String; 其中Element_username 前面是固定的,后面是action中的属性名 注意:此处因为是基本类型的集合数据,所以无需转换器类 Map类型转换 需要注意的是: (1)指定key类型:  Key_ Map类型的属性的属性名=key类型的全限定类名    (2)指定value类型: Element_ Map类型的属性的属性名=value类型的全限定类名
转载请注明原文地址: https://www.6miu.com/read-4931067.html

最新回复(0)