【发布时间】:2010-10-24 14:49:09
【问题描述】:
我正在尝试让一些验证器与 Spring 3 一起使用。我不断收到错误消息:
org.springframework.beans.NotReadablePropertyException:bean 类 [java.lang.String] 的无效属性“名称”:bean 属性“名称”不可读或具有无效的 getter 方法:getter 的返回类型是否匹配setter 的参数类型?
我的问题是,这就是那个错误所指的。我相信在rejectValue 方法中,它在myobj 上调用getName()。是不是说 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");
}
}
这是我的对象:
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");
}
}
【问题讨论】:
-
你能告诉我们
MyObject类的代码吗? -
为什么错误信息是
MyObj而不是MyObject? -
复制和粘贴搞砸了,所以我不得不输入其中的一部分。我的错误。
-
该消息应该会有所帮助:“of bean class [java.lang.String]”。
-
这实际上对我没有帮助,因为我不确定该类应该是什么以及为什么它是 String。
标签: java spring validation