Я пытаюсь заставить некоторые валидаторы работать с Spring 3. Я получаю сообщение об ошибке:
org.springframework.beans.NotReadablePropertyException: недопустимое свойство 'name' класса бина [java.lang.String]: свойство bean-компонента 'name' не читается или имеет недопустимый метод получения: соответствует ли тип возвращаемого значения метода получения параметру установщика?
У меня такой вопрос?к чему относится эта ошибка.Я считаю, что в методе rejectValue он вызывает getName () для myobj.Это говорит о том, что myobj.getName () не существует?Потому что я могу сказать вам, что это так.В противном случае этот метод даже не скомпилируется.
public void validate(Object target, Errors errors) {
MyObject myobj = (MyObject)target;
String name = myobj.getName();
if(name.length() >100 || name.length() < 10) {
errors.rejectValue("name", "fieldLength");
}
}
Вот MyObject:
public class MyObject {
public MyObject() {
super();
// TODO Auto-generated constructor stub
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
И в моем jsp:
<form:form name="MyForm" commandName="myobj" method="post" action="${testurl}">
<table id="mytable" width="100%">
<tbody>
<tr>
<td colspan="2">
<form:errors path="name"/>
</td>
</tr>
<tr>
<td>
Name:
</td>
<td>
<form:input path="name"/>
</td>
</tr>
</tbody>
</table>
Мой контроллер:
@ActionMapping(params="myaction=test")
public void test(@ModelAttribute("myobj") MyObject myobj, BindingResult bindingResult,
ActionRequest request, ActionResponse response, SessionStatus sessionStatus) {
}
testValidator.validate(myobj, bindingResult);
if (!bindingResult.hasErrors()) {
response.setRenderParameter("myaction", "nextpage");
} else {
response.setRenderParameter("myaction", "test");
}
}