繁体   English   中英

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

[英]In SpringMVC, after form is submitted, PropertyNotFoundException Encountered

这是控制器

@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;
    }
}

现在,我点击“提交”按钮后,遇到以下错误。 不知道为什么。 我在表单支持bean中有适当的getter / setter。

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

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

由于以小写字母开头的变量是Java约定 ,因此Spring MVC将搜索名为: firstName, ageNOT FirstName, Age实例变量。 例外:Spring抛出javax.el.PropertyNotFoundException ,因为他找不到FirstNameAge任何方法方法

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

    private String FirstName;

    private int Age;

这确实是一个坏习惯,用小写字母定义变量中的第一个字符。 使其小写,然后重试。

将您的属性重命名为具有较低f的firstName 由于命名约定,请重试(也在jsp中)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM