Struts中的Converter可以將一些特定對(duì)象轉(zhuǎn)換成字符串,比如int、boolean、double等。例如:它會(huì)將1,y,on,yes轉(zhuǎn)換成true.具體的實(shí)現(xiàn)要
參閱org.apache.commons.beanutils.Converter下的ConvertUtils.class類。下面是自己參照這個(gè)類寫了一個(gè)轉(zhuǎn)換java.util.date數(shù)據(jù)類型的
例子:
首先建一個(gè)類實(shí)現(xiàn)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轉(zhuǎn)換器
* @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;
}
}
然或建一個(gè)servlet用來(lái)注冊(cè)這個(gè)ava.util.Date轉(zhuǎn)換器:
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);//調(diào)用ConvertUtils的register方法
}
}
當(dāng)然要在web.xml中配置這個(gè)servlet:
<servlet>
<servlet-name>Myconvert</servlet-name>
<servlet-class>com.struts.convert_servlet.Myconvert</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
下面是具體的測(cè)試頁(yè)面:
index.jsp的主要代碼:
<form action="convert.do" method="post">
utildate_vlaue:<input type="text" name="utildatevalue">
<input type="submit" value="submit">
</form>
相應(yīng)的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;
}
}
相應(yīng)的action頁(yè)面:
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>
顯示頁(yè)面success.jsp:
主要代碼:${convertActionForm.utildatevalue}
然后當(dāng)你在index.jsp中的輸入框中輸入:1987-11-11 2-12-45(只能按照UtilConvert類中的yyyy-MM-dd HH-mm-ss格式輸入)
提交后就會(huì)顯示如下:Wed Nov 11 02:12:45 CST 1987
當(dāng)然這例子只是一個(gè)實(shí)現(xiàn),用處很小,有很大的局限性。