假设我们有:
级车:
public class Car{
private String model;
private String brand;
private Collection<People> owners;
//constructor,getters and setters
}阶级人士:
public class People{
private Car car;
private String name;
private Gender gender;
//constructor,getters and setters
}班级性别:
public class Gender{
private Char gender;
//constructor,getters and setters
}那么,如果我想将集合所有者传递给我的视图:
<body>
<h1>Car detail: </h1>
<h2>Owners: </h2>
<table>
<form:form modelAttribute="owners" method="post" action="processOwnersSelection.htm">
<tr>
<td>
<ul>
<form:checkboxes element="li" path="owners" items="${owners}"></form:checkboxes>
</ul>
</td>
</tr>
<tr>
<td>
<button type="submit">Next</button>
</td>
</tr>
</form:form>
</table>
</body>我的主计长:
@RequestMapping(value = "/selectOwners")
protected ModelAndView showOwnersSelection() throws ServiceException{
return new ModelAndView("car/ownerSelection", "owners", super.getService().getAllOwners());
}请注意。这将用于连接多个车主(谁存在于out DB)到一辆汽车。
我会得到一个错误:
org.springframework.beans.NotReadablePropertyException:无效属性bean类的‘所有者’:Bean属性‘所有者’是不可读的,或者有一个无效的getter方法: getter的返回类型与setter的参数类型匹配吗?
据我所知,Spring通过使用PropertyEditor或转换器的实现来转换这些?
所以我应该手动写一个,但是Spring怎么知道我做了一个他(或她)必须使用的呢?一个人应该是什么样的呢?
发布于 2014-05-27 18:46:25
弹簧3型转换器SPI取代JavaBean PropertyEditors。
配置文件中的<mvc:annotation-driven />将自动安装默认类型转换器。我们可以使用注释(如@DateTimeFormat或@NumberFormat )覆盖默认值。
对于自定义字段类型,我们可以通过配置遵循以下约定:
有关更多详细信息,请参阅此链接。
发布于 2014-05-27 18:20:47
见常见
<form:form modelAttribute="owners" method="post"
action="processOwnersSelection.htm">modelAttribute应该是对象的引用名称,它保存其形式下的所有操作。
我们可以使用spring标记的path属性来访问它们,比如复选框或其他人。
我向您保证,您正在使用owners作为modelAttribute,它可能不是您的控制器中的People类的模型。
我不知道你是怎么在控制器里定义的。
我认为您必须在下面的代码中使用People引用模型属性而不是owners
<form:form modelAttribute="owners" method="post"
action="processOwnersSelection.htm">因为path="owners",它试图在控制器中为modelAttribute="owners"定义的类中找到owners属性。
请仔细检查一下。
https://stackoverflow.com/questions/23895715
复制相似问题