读书人

关于struts2中类型转换有关问题

发布时间: 2012-01-21 21:31:43 作者: rapoo

关于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;}
[解决办法]
纯属手动写 可能具体代码要调试下
[解决办法]
探讨

楼主可以利用 dateformat进行字符类到时间类型的转换
例如dateformat df=new dateformat(yyMMdd);


String date=df.("传进来的字符串");
最后利用
Java code
Date date;

public Date getDate() {
return date;
}

public void setDate(Date da……

读书人网 >J2EE开发

热点推荐