<li>测试ActionForm类型转换器</li><br>
<form action="typeconvert.do" method="post">
intValue:<input type="text" name="intValue"><br>
doubleValue:<input type="text" name="doubleValue"><br>
booleanValue:<input type="text" name="booleanValue"><br>
java.sql.Date:<input type="text" name="sqlDate"><br>
java.util.Date:<input type="text" name="utilDate"><br>
<input type="submit" value="提交">
</form>
ActionForm:
package com.bjsxt.struts;
import org.apache.struts.action.ActionForm;
/**
* struts中的类型转换测试
* @author Administrator
*
*/
public class TypeConvertActionForm extends ActionForm {
private int intValue;
private double doubleValue;
private boolean booleanValue;
private java.sql.Date sqlDate;
private java.util.Date utilDate;
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public double getDoubleValue() {
return doubleValue;
}
public void setDoubleValue(double doubleValue) {
this.doubleValue = doubleValue;
}
public boolean isBooleanValue() {
return booleanValue;
}
public void setBooleanValue(boolean booleanValue) {
this.booleanValue = booleanValue;
}
public java.sql.Date getSqlDate() {
return sqlDate;
}
public void setSqlDate(java.sql.Date sqlDate) {
this.sqlDate = sqlDate;
}
public java.util.Date getUtilDate() {
return utilDate;
}
public void setUtilDate(java.util.Date utilDate) {
this.utilDate = utilDate;
}
}
Action:
package com.bjsxt.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* struts中的类型转换测试
* @author Administrator
*
*/
public class TypeConvertTestAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("success");
}
}
配置信息:
<action path="/typeconvert"
type="com.bjsxt.struts.TypeConvertTestAction"
name="typeconvertForm"
scope="request"
>
<forward name="success" path="/typeconvert_success.jsp"/>
</action>
jsp页面:
<body>
intValue:${typeconvertForm.intValue }<br>
doubleValue:${typeconvertForm.doubleValue }<br>
booleanValue:${typeconvertForm.booleanValue }<br>
java.sql.dateValue:${typeconvertForm.sqlDate }<br>
java.util.utilValue:${typeconvertForm.utilDate }<br>
</body>
ActionForm在收集java.util.Date的时候不能转换,所以如果要转换到java.util.Date那么就要实现一个转换器,该转换器实现Convert类,实现convert方法,然后将转换器注册
package com.bjsxt.struts;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
/**
* java.util.Date类型转换器
* @author Administrator
*
*/
public class UtilDateConverter implements Converter {
public Object convert(Class type, Object value) {
System.out.println("UtilDateConverter.value=" + value);
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
Date d = null;
//将字符串转换为Date
if (value instanceof String) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse((String)value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return d;
}
}
注册为插件:
package com.bjsxt.struts;
import java.util.Date;
import javax.servlet.ServletException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
public class UtilDateConverterInitWithPlugin implements PlugIn {
public void destroy() {
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
System.out.println("UtilDateConverterInitWithPlugin.init()");
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
在struts-config.xml中配置:
<plug-in className="com.bjsxt.struts.UtilDateConverterInitWithPlugin"/>
ActionForm是一个数据传输对象(DTO),vo是值对象(VO=DTO)