提交选择框时出现Spring mvc绑定异常

时间:2012-10-15 23:38:16

标签: spring spring-mvc

我有一个包含国家,州和城市下拉框的JSP。默认情况下,城市是填充的,然后州和城市将根据使用ajax选择的国家和州进行。

 <form:select path="ContactInfoVO[0].countryList" multiple="single" id="country">       
<form:option value="-1" label="-- Select Country--"></form:option>                      
<c:forEach var="country" items="${ManagerVO.ContactInfoVO[0].countryList}" varStatus="item">
<form:option value="${country.countryId}" label="${country.countryName}"/></c:forEach> </form:select>   

<form:select path="ContactInfoVO[0].stateList" multiple="single" id="state" class="small">      
<form:option value="-1" label="-- Select State--"></form:option>                        
<c:forEach var="state" items="${ManagerVO.ContactInfoVO[0].stateList}" varStatus="item">
<form:option value="${state.stateId}" label="${state.stateName}"/></c:forEach></form:select>    

<form:select path="ContactInfoVO[0].cityList" multiple="single" id="city" class="validate[required] small">     
<form:option value="-1" label="-- Select City--"></form:option>                     
<c:forEach var="city" items="${ManagerVO.ContactInfoVO[0].cityList}" varStatus="item">
<form:option value="${city.cityId}" label="${city.cityName}"/></c:forEach></form:select>

当我提交此表单时,我收到错误 -

 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 3 errors
    Field error in object 'ManagerVO' on field 'ContactInfoVO[0].cityList': rejected value [80930]; codes [typeMismatch.ManagerVO.ContactInfoVO[0].cityList,typeMismatch.ManagerVO.ContactInfoVO.cityList,typeMismatch.ContactInfoVO[0].cityList,typeMismatch.ContactInfoVO.cityList,typeMismatch.cityList,typeMismatch.java.util.List,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [ManagerVO.ContactInfoVO[0].cityList,ContactInfoVO[0].cityList]; arguments []; default message [ContactInfoVO[0].cityList]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'ContactInfoVO[0].cityList'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.admin.command.CityVO] for property 'cityList[0]': no matching editors or conversion strategy found]
    Field error in object 'ManagerVO' on field 'ContactInfoVO[0].countryList': rejected value [31]; codes [typeMismatch.ManagerVO.ContactInfoVO[0].countryList,typeMismatch.ManagerVO.ContactInfoVO.countryList,typeMismatch.ContactInfoVO[0].countryList,typeMismatch.ContactInfoVO.countryList,typeMismatch.countryList,typeMismatch.java.util.List,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [ManagerVO.ContactInfoVO[0].countryList,ContactInfoVO[0].countryList]; arguments []; default message [ContactInfoVO[0].countryList]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'ContactInfoVO[0].countryList'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.admin.command.CountryVO] for property 'countryList[0]': no matching editors or conversion strategy found]
    Field error in object 'ManagerVO' on field 'ContactInfoVO[0].stateList': rejected value [601]; codes [typeMismatch.ManagerVO.ContactInfoVO[0].stateList,typeMismatch.ManagerVO.ContactInfoVO.stateList,typeMismatch.ContactInfoVO[0].stateList,typeMismatch.ContactInfoVO.stateList,typeMismatch.stateList,typeMismatch.java.util.List,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [ManagerVO.ContactInfoVO[0].stateList,ContactInfoVO[0].stateList]; arguments []; default message [ContactInfoVO[0].stateList]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'ContactInfoVO[0].stateList'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.admin.command.StateVO] for property 'stateList[0]': no matching editors or conversion strategy found]

有人可以告诉我如何解决它吗?

2 个答案:

答案 0 :(得分:1)

输出中存在错误:您正在尝试设置类型为ContactInfoVO[0].cityList且值为List的域类字段String

如果没有看到您的域类等的代码,很难知道您的网页打算做什么。如果您尝试使用用户确定的单个值填充数据库,那么通常使用来自不同表(或类/枚举)的值填充选择下拉列表,然后将用户选择的单个值设置为自己的值类/表。看起来你正在尝试用同一个类做这两件事。

答案 1 :(得分:0)

我看到你正在尝试设置(例如)countryId到ContactInfoVO [0] .countryList。所以你要将一个Integer设置为List。

我认为问题出在这里:

 <form:select path="ContactInfoVO[0].countryList" multiple="single" id="country"> 

我没有看到countryList有任何意义。它应该与您选择的ContactInfo[0].countryId相匹配,在本例中为"${country.countryId}"

如果你的邮政ContractInfoVO类和你的标签会更清楚。

相关问题