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
當然這例子只是一個實現,用處很小,有很大的局限性。