警告: Error setting value
ognl.MethodFailedException: Method "setAge" failed for object com.test.action.RegisterAction@d6b059 [java.lang.NoSuchMethodException: setAge([Ljava.lang.String;)].............................../-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setAge([Ljava.lang.String;)................................警告: Error setting value
ognl.MethodFailedException: Method "setBirthday" failed for object com.test.action.RegisterAction@d6b059 [java.lang.NoSuchMethodException: setBirthday([Ljava.lang.String;)].............................-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setBirthday([Ljava.lang.String;).........................
警告: Error setting value
ognl.MethodFailedException: Method "setGraduation" failed for object com.test.action.RegisterAction@d6b059 [java.lang.NoSuchMethodException: setGraduation([Ljava.lang.String;)]
而且在浏览器上左上会出现:
Invalid field value for field "graduation".
Invalid field value for field "age".
Invalid field value for field "birthday".
大概是什么原因..谢谢,
ognl.MethodFailedException: Method "setAge" failed for object com.test.action.RegisterAction@d6b059 [java.lang.NoSuchMethodException: setAge([Ljava.lang.String;)].............................../-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setAge([Ljava.lang.String;)................................警告: Error setting value
ognl.MethodFailedException: Method "setBirthday" failed for object com.test.action.RegisterAction@d6b059 [java.lang.NoSuchMethodException: setBirthday([Ljava.lang.String;)].............................-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setBirthday([Ljava.lang.String;).........................
警告: Error setting value
ognl.MethodFailedException: Method "setGraduation" failed for object com.test.action.RegisterAction@d6b059 [java.lang.NoSuchMethodException: setGraduation([Ljava.lang.String;)]
而且在浏览器上左上会出现:
Invalid field value for field "graduation".
Invalid field value for field "age".
Invalid field value for field "birthday".
大概是什么原因..谢谢,
import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegisterAction extends ActionSupport {
private String username;
private String password;
private String repassword;
private int age;
private Date birthday;
private Date graduation;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRepassword() {
return repassword;
}
public void setRepassword(String repassword) {
this.repassword = repassword;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Date getGraduation() {
return graduation;
}
public void setGraduation(Date graduation) {
this.graduation = graduation;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
@Override
public void validate() {
if(null == username || username.length() < 6 || username.length() > 10 ) {
this.addFieldError("username", "username invalid");
}
if(null == password || password.length() < 6 || password.length() > 10) {
this.addFieldError("password", "password invalid");
}
else if(null == repassword || repassword.length() < 6 || repassword.length() > 10 ) {
this.addFieldError("repassword", "repassword invalid");
}
else if(!password.equals(repassword)) {
this.addFieldError("password", "two passwords not the same");
}
if(age < 1 || age > 150) {
this.addFieldError("age", "age invalid");
}
if(null == birthday) {
this.addFieldError("birthday", "birthday invalid");
}
if(null == graduation) {
this.addFieldError("graduation", "graduation invalid");
}
if(null != birthday && null != graduation) {
Calendar c1 = Calendar.getInstance();
c1.setTime(birthday);
Calendar c2 = Calendar.getInstance();
c2.setTime(graduation);
if(!c1.before(c2)) {
this.addFieldError("birthday", "birthday should be before garduation");
}
}
}
}........<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<form action="register.action" method="post">
<table align="center" width="%40" border=10 bgcolor="black">
<tr>
<td bgcolor="ffff">
username
</td>
<td bgcolor="ffff">
<input type="text" name="username">
</td>
</tr>
<tr>
<td bgcolor="ffff">
password
</td>
<td bgcolor="ffff">
<input type="password" name="password">
</td>
</tr>
<tr>
<td bgcolor="ffff">
re-password
</td>
<td bgcolor="ffff">
<input type="password" name="repassword">
</td>
</tr>
<tr>
<td bgcolor="ffff">
age
</td>
<td bgcolor="ffff">
<input type="text" name="age">
</td>
</tr>
<tr>
<td bgcolor="ffff">
birthday
</td>
<td bgcolor="ffff">
<input type="text" name="birthday">
</td>
</tr>
<tr>
<td bgcolor="ffff">
graduation
</td>
<td bgcolor="ffff">
<input type="text" name="graduation">
</td>
</tr>
<tr>
<td bgcolor="red">
<input type="submit" value="submit">
</td>
<td bgcolor="red">
<input type="reset" name="reset">
</td>
</tr>
</table>
</form>
</body>
</html>
.......
registerAction
private int age; ........
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
你仔细看一下,系统提示你,找不到[java.lang.NoSuchMethodException: setAge([Ljava.lang.String;)]
这个参数是串,而你的是int你把这个属性改成String吧,然后重新生成set/get方法
要用的时候,就把它从串转到int,你的数据从前台过来时,是只会当做字符串的~~
Date改成String
<s:fielderror></s:fielderror>
<form action="register.action" method="post">在前台,
<body>
<s:fielderror></s:fielderror>
<form action="register.action" method="post">一加入struts标签,就会出错,不加就是没事,
具体原因?.....
因为int 是基础数据类型,
初始化的时候 有时出现null初始化,所以容易报错,
特别是反射的时候。 这个已经有前辈解决的,是原话。顶一个