这是控制器。
@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
答案 0 :(得分:1)
getter方法public String getFirstName()
与名为firstName
而不是FirstName
的实例变量等效。
由于以小写字母开头的变量是Java convention,因此Spring MVC将搜索名为firstName, age
和 NOT FirstName, Age
的实例变量。
例外情况:javax.el.PropertyNotFoundException
被Spring引发,因为他找不到FirstName
和Age
的任何method accesors。
您所要做的就是更改这些实例变量名称,以便它们以小写字母开头:firstName, age
。
答案 1 :(得分:0)
private String FirstName;
private int Age;
这实际上是一种不好的做法,用小写字母定义变量中的第一个字符。将它设为小写并重试。
答案 2 :(得分:0)
使用较低的f将您的属性重命名为firstName
。因为命名约定并再次尝试(也在jsp中)