在SpringMVC中,提交表单后,遇到PropertyNotFoundException

时间:2014-08-22 06:14:23

标签: java spring-mvc

这是控制器

@Controller
@RequestMapping("/Register")
public class RegistrationController {

    @RequestMapping(method=RequestMethod.GET)
    public String showForm(ModelMap model)
    {
        System.out.println("..In showform()..");
        UserBean userbean=new UserBean();
        model.addAttribute("USER", userbean);
        return "Test";
    }
    @RequestMapping(value="/Register" ,method=RequestMethod.POST)
    public String processForm(@ModelAttribute("USER") UserBean user)
    {   
            System.out.println("UserDetails are :"+ user.getFirstName());
            System.out.println("UserDetails are :"+ user.getAge());
            return "Success";
    }

}

这是 Test.jsp

<form:form method="POST" modelAttribute="USER"  action="Register">
<table>

<tr><td>Name</td> <td><form:input path="FirstName"/></td></tr>
<tr><td>Age</td> <td><form:input path="Age"/></td></tr>
<tr><td><input type="submit" value="Submit"/></td></tr>
</table>
</form:form>

这是 Success.jsp

<body>
    <table>
        <tr>
            <td>User Name :</td>
            <td><core:out value="${USER.FirstName}" /></td>
        </tr>
        <tr>
            <td>Age :</td>
            <td><core:out value="${USER.Age}" /></td>
        </tr>
    </table>
</body>

这是com.beans.UserBean

public class UserBean {

    private String FirstName;

    private int Age;

    public String getFirstName() {
        return FirstName;
    }
    public void setFirstName(String firstName) {
        this.FirstName = firstName;
    }
    public int getAge() {
        return Age;
    }
    public void setAge(int age) {
        this.Age = age;
    }
}

现在,在Clik on SUBMIT按钮后,遇到以下错误。不知道为什么。我在表格支持bean中有适当的getter / setter。

javax.el.PropertyNotFoundException: Property 'FirstName' not found on type com.beans.UserBean

3 个答案:

答案 0 :(得分:1)

getter方法public String getFirstName()与名为firstName而不是FirstName的实例变量等效。

由于以小写字母开头的变量是Java convention,因此Spring MVC将搜索名为firstName, age NOT FirstName, Age的实例变量。 例外情况:javax.el.PropertyNotFoundException被Spring引发,因为他找不到FirstNameAge的任何method accesors

您所要做的就是更改这些实例变量名称,以便它们以小写字母开头:firstName, age

答案 1 :(得分:0)

    private String FirstName;

    private int Age;

这实际上是一种不好的做法,用小写字母定义变量中的第一个字符。将它设为小写并重试。

答案 2 :(得分:0)

使用较低的f将您的属性重命名为firstName。因为命名约定并再次尝试(也在jsp中)