我按照网上的例子做了一个point的类型转换,没想到遇到了让人费解的异常...
index.jsp:
<s:form action="login">
<s:textfield name="point" label="point"/>
<s:submit label="submit" align="center"/>
</s:form>然后在LoginAction里定义了一个Point point;设置好set,get方法第三步在LoginAction同一个包下(action包)建立:LoginAction-conversion.properties文件:
point=utils.PointConverter在utils包下建立PointConverter.javastruts.xml中这样配置:
<package name="struts2" extends="struts-default">
<action name="login" class="action.LoginAction">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>但是只要已提交index.jsp页面就返回当前页面并显示:
Invalid field value for field "point".后台报错:
2009-8-12 10:49:29 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Error setting value
ognl.MethodFailedException: Method "setPoint" failed for object action.LoginAction@2d810f [java.lang.NoSuchMethodException: setPoint([Ljava.lang.String;)]我在PointConverter中写了一段
System.out.println("------------------------------");
测试,发现并没有进入
public Object convertValue(Map context, Object value, Class toType)这个方法....
求教!
index.jsp:
<s:form action="login">
<s:textfield name="point" label="point"/>
<s:submit label="submit" align="center"/>
</s:form>然后在LoginAction里定义了一个Point point;设置好set,get方法第三步在LoginAction同一个包下(action包)建立:LoginAction-conversion.properties文件:
point=utils.PointConverter在utils包下建立PointConverter.javastruts.xml中这样配置:
<package name="struts2" extends="struts-default">
<action name="login" class="action.LoginAction">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>但是只要已提交index.jsp页面就返回当前页面并显示:
Invalid field value for field "point".后台报错:
2009-8-12 10:49:29 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: Error setting value
ognl.MethodFailedException: Method "setPoint" failed for object action.LoginAction@2d810f [java.lang.NoSuchMethodException: setPoint([Ljava.lang.String;)]我在PointConverter中写了一段
System.out.println("------------------------------");
测试,发现并没有进入
public Object convertValue(Map context, Object value, Class toType)这个方法....
求教!
//----------------------
//LoginAction:
//-----------------------
package action;import bean.Point;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{
private Point point;
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
/**
* 自动执行该函数
*/
public String execute() throws Exception{
return SUCCESS;
}
}
而你在action里面定义的是Point
so it is wrong
import bean.Point;public class PointConverter extends DefaultTypeConverter {
/**
* 类型转换
*/
public Object convertValue(Map context, Object value, Class toType) {
System.out.println("------------------------------");
if(toType == Point.class){
Point point=new Point();
String[] str=(String[])value;
String[] params=str[0].split(",");
point.setX(Integer.parseInt(params[0]));
point.setY(Integer.parseInt(params[1]));
return point;
}
if(toType == String.class){
Point point=(Point)value;
return "x="+point.getX()+",y="+point.getY();
}
return null;
}
}
common-uploadFiles
common-io
都拷贝过去了