Struts中的Converter可以将一些特定对象转换成字符串,比如int、boolean、double等。例如:它会将1,y,on,yes转换成true.具体的实现要
参阅org.apache.commons.beanutils.Converter下的ConvertUtils.class类。下面是自己参照这个类写了一个转换java.util.date数据类型的
例子:
首先建一个类实现Converter接口。
package com.struts.myconvert;
import java.text.DateFormat;
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 UtilConvert implements Converter {
public Object convert(Class type, Object value) {
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
if (value instanceof String) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
try {
return format.parse(value.toString());
} catch (ParseException e) {
e.printStackTrace();
}
}
return value;
}
}
然或建一个servlet用来注册这个ava.util.Date转换器:
package com.struts.convert_servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.ConvertUtils;
import com.bjsxt.struts.myconvert.UtilConvert;
public class Myconvert extends HttpServlet {
public void init() throws ServletException {
ConvertUtils.register(new UtilConvert(),Date.class);//调用ConvertUtils的register方法
}
}
当然要在web.xml中配置这个servlet:
<servlet>
<servlet-name>Myconvert</servlet-name>
<servlet-class>com.struts.convert_servlet.Myconvert</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
下面是具体的测试页面:
index.jsp的主要代码:
<form action="convert.do" method="post">
utildate_vlaue:<input type="text" name="utildatevalue">
<input type="submit" value="submit">
</form>
相应的actionForm:
package com.struts.myconvert;
import java.text.SimpleDateFormat;
import org.apache.struts.action.ActionForm;
public class ConvertActionForm extends ActionForm {
private java.util.Date utildatevalue;
public java.util.Date getUtildatevalue() {
return utildatevalue;
}
public void setUtildatevalue(java.util.Date utildatevalue) {
this.utildatevalue = utildatevalue;
}
}
相应的action页面:
package com.struts.myconvert;
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;
public class ConvertAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ConvertActionForm cf = (ConvertActionForm)form;
return mapping.findForward("success");
}
}
struts-config.xml中的配置:
<form-beans>
<form-bean name="convertActionForm" type="com.struts.myconvert.ConvertActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/convert"
type="com.struts.myconvert.ConvertAction"
name="convertActionForm"
scope="request"
>
<forward name="success" path="/success.jsp"></forward>
</action>
</action-mappings>
显示页面success.jsp:
主要代码:${convertActionForm.utildatevalue}
然后当你在index.jsp中的输入框中输入:1987-11-11 2-12-45(只能按照UtilConvert类中的yyyy-MM-dd HH-mm-ss格式输入)
提交后就会显示如下:Wed Nov 11 02:12:45 CST 1987
当然这例子只是一个实现,用处很小,有很大的局限性。