1

我是spring mvc框架的新手-我遇到了一个类似的问题-

有课

class User{
private String name;
private City city;
//getters setters
}

class Country{
private int id;
private String name;
//getters setters
}

class State{
private int id;
private String name;
private Country country;
//getters setters
}

class city{
private int id;
private String name;
private State state;
State state;
//getters setters
}

我有这样的表格

<form:form modelAttribute="user" method="POST">
<form:label path="name">Name</form:label>
<form:input path="name"/>

<form:label path="city.state.country">Country</form:label>  //Getting error here
<form:select path="city.state.country"></form:select>
<form:label path="city.state"></form:label>
<form:select path="city.state"></form:select>
<form:label path="city"></form:label>
<form:select path="city"></form:select>
</formform>

错误
org.springframework.beans.NotReadablePropertyException: Invalid property 'city.state' of bean class [org.opentutor.beans.User]: Bean property 'city.state' is not readable or has an invalid getter method:

getter 的返回类型是否与 setter 的参数类型匹配?

基本上我很困惑如何设置用户的国家、州和城市值。

4

2 回答 2

2

getX你的类有方法是不够的。他们需要实际返回有意义的对象。比如getCity()需要返回一个City对象,这样路径city.state.country才能解析为user.getCity().getState().getCountry(). 如果您有一个getCity()返回int.

于 2013-09-25T14:59:19.440 回答
0

User你需要一个getCity()方法。City你需要一个getState()方法,你State需要一个getCountry()方法。您还需要预初始化不同的对象。如果路径中的元素之一解析为null它将不起作用(因为没有任何东西可以绑定)。

基本上,路径中的每个元素都需要一个空的、非空的对象。根据您使用的 Spring 版本,它会自动为您处理(在旧版本中,您需要手动初始化整个路径)。

于 2013-09-25T14:30:57.537 回答