0

我有一个具有国家、州和城市下拉框的 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]

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

4

2 回答 2

1

输出中存在错误:您正在尝试设置具有值类型的域类ContactInfoVO[0].cityList字段。ListString

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

于 2012-10-16T00:49:00.203 回答
0

我看到您正在尝试将 countryId 设置(例如)为 ContactInfoVO[0].countryList。所以你正在将一个整数设置为一个列表。

我认为问题出在这里:

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

我认为countryList那里没有任何意义。在这种情况下,它应该ContactInfo[0].countryId与您选择的匹配"${country.countryId}"

如果您发布 ContractInfoVO 类和您的标签会更清楚。

于 2012-10-16T01:16:55.927 回答