自定义java.util.Date转换起的问题
今天编写了java.util.Date的转换器,虽然写的和教程上的几乎一致,但是就是出现问题,高手帮忙看下吧publicclassUtilDateConverterAct...
今天编写了java.util.Date的转换器,虽然写的和教程上的几乎一致,但是就是出现问题,高手帮忙看下吧
public class UtilDateConverterAction implements Converter {
public Object convert(Class key, Object value) {
if(value==null){
return value;
}
if(value instanceof Date){
return value;
}
Date d = null;
if(value instanceof String){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse((String)value);
} catch (ParseException e) {
e.printStackTrace();
}
}
return d;
}
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;
}
使用Servlet注册:
public class UtilDateConverterServlet extends HttpServlet {
public void init() throws ServletException {
ConvertUtils.register(new UtilDateConverterAction(),Date.class);
}
}
web.xml中
<servlet>
<servlet-name>UtilDateConverterServlet</servlet-name>
<servlet-class>com.neusoft.Converter.UtilDateConverterServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
struts-config.xml中
<form-bean name="converterForm" type="com.neusoft.Converter.ConverterTestActionForm"/>
<action path="/converter"
type="com.neusoft.Converter.ConverterTestAction"
name="converterForm"
scope="request"
>
<forward name="success" path="/converter/converter_success.jsp"/>
</action>
页面上是这样写的:
<form action="../converter.do" method="post">
int值:<input type="text" name="intValue"/><br/>
boolean值<input type="text" name="booleanValue"><br/>
double值<input type="text" name="doubleValue"/><br/>
sqlDate值<input type="text" name="sqlDate"><br/>
utilDate值<input type="text" name="utilDate"/><br/>
<input type="submit" value="提交">
</form>
然后点击提交后提示java.lang.IllegalArgumentException: Cannot invoke com.neusoft.Converter.ConverterTestActionForm.setUtilDate - argument type mismatch 异常 展开
public class UtilDateConverterAction implements Converter {
public Object convert(Class key, Object value) {
if(value==null){
return value;
}
if(value instanceof Date){
return value;
}
Date d = null;
if(value instanceof String){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse((String)value);
} catch (ParseException e) {
e.printStackTrace();
}
}
return d;
}
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;
}
使用Servlet注册:
public class UtilDateConverterServlet extends HttpServlet {
public void init() throws ServletException {
ConvertUtils.register(new UtilDateConverterAction(),Date.class);
}
}
web.xml中
<servlet>
<servlet-name>UtilDateConverterServlet</servlet-name>
<servlet-class>com.neusoft.Converter.UtilDateConverterServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
struts-config.xml中
<form-bean name="converterForm" type="com.neusoft.Converter.ConverterTestActionForm"/>
<action path="/converter"
type="com.neusoft.Converter.ConverterTestAction"
name="converterForm"
scope="request"
>
<forward name="success" path="/converter/converter_success.jsp"/>
</action>
页面上是这样写的:
<form action="../converter.do" method="post">
int值:<input type="text" name="intValue"/><br/>
boolean值<input type="text" name="booleanValue"><br/>
double值<input type="text" name="doubleValue"/><br/>
sqlDate值<input type="text" name="sqlDate"><br/>
utilDate值<input type="text" name="utilDate"/><br/>
<input type="submit" value="提交">
</form>
然后点击提交后提示java.lang.IllegalArgumentException: Cannot invoke com.neusoft.Converter.ConverterTestActionForm.setUtilDate - argument type mismatch 异常 展开
4个回答
展开全部
或者直接创建java.sql.Date对象,楼主试一下。
一楼的方法不推荐使用
一楼的方法不推荐使用
追问
java.sql.Date的Struts自己就可以转换,因为Struts无法自动转换util.Date,所以要写个自动转换的方法,我看资料上也是像我这么写的,怪就怪在人家的好使,我的就出异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好能把异常栈的信息给出,这样很难定位问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询