警告: 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". 
大概是什么原因..谢谢,  

解决方案 »

  1.   

    java.lang.NoSuchMethodException: setAge你这三个属性是不是没有生成set方法呀?
      

  2.   

    检查你的entity类所有属性都有get set方法么?
      

  3.   

    package com.test.action;import java.util.Calendar;
    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>
    .......
      

  4.   

    对于set 方法的错误?, 不明白
    registerAction 
    private int age; ........ 
            public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
      

  5.   


    你仔细看一下,系统提示你,找不到[java.lang.NoSuchMethodException: setAge([Ljava.lang.String;)]
    这个参数是串,而你的是int你把这个属性改成String吧,然后重新生成set/get方法
    要用的时候,就把它从串转到int,你的数据从前台过来时,是只会当做字符串的~~
      

  6.   

    包括那两个Date的也都要改~~
      

  7.   

       age  int 改成 Integer
            Date改成String
       
      

  8.   

     <body>
        
       <s:fielderror></s:fielderror>
       
        <form action="register.action" method="post">在前台,   
    <body>
        
       <s:fielderror></s:fielderror>
       
        <form action="register.action" method="post">一加入struts标签,就会出错,不加就是没事,
    具体原因?.....
      

  9.   

     <s:fielderror></s:fielderror>是显示文件错误信息的,这就类似于你在后台try{}catch{}一样捕获并打印异常的作用。你不加当然不打印错误了
      

  10.   

    OKOK谢谢大家把int 改为 integer 
      

  11.   

    呵呵,那就好,我也顺便学习了,现在说一下原因:
    因为int  是基础数据类型, 
    初始化的时候 有时出现null初始化,所以容易报错, 
    特别是反射的时候。  这个已经有前辈解决的,是原话。顶一个