关于struts2中类型转换问题
xml配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" ></constant>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<constant name="struts.ui.theme" value="simple"/>
<package name="default" namespace="/a" extends="struts-default">
<action name="test" class="yyAction" >
<result>
/test.jsp
</result>
<result name="input">/Hello.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
对应的action:
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class yyAction extends ActionSupport{
private static final long serialVersionUID = 1L;
Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String execute() throws Exception {
return SUCCESS;
}
}
对应的JSP文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
date:<s:property value="d"/><br/>
</body>
</html>
当我在连接中输入:http://localhost:8888/Struts_2/a/test?date=1900-02-01为什么会跳转到/Hello.jsp而不是执行test。jsp呢?谢谢
------解决方案--------------------Action的方法的参数类型不对啊,你定义的是Date,jsp中给的是String,这样就有问题了啊
------解决方案--------------------<s:date name= format="dd/MM/yyyy" value="1900-02-01"/>
------解决方案--------------------很早就起床了,我发表下我的想法,如有不对,还望谅解.
首先你传入的类型是String类弄, 到ACTION中会执行setDate()方法,由于类型转换错误,故被Struts2的Interceptor拦截器进行拦截.(里面的exception).如果执行了exception拦截器,则该拦截器默认会返回input. 即你Hello.jsp页面.希望楼主能看下此拦截器的原理即可.
------解决方案--------------------楼主可以利用 dateformat进行字符类到时间类型的转换
例如dateformat df=new dateformat(yyMMdd);
String date=df.("传进来的字符串");
最后利用
Java code
Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
------解决方案--------------------
纯属手动写 可能具体代码要调试下
------解决方案--------------------