Просто голова вверх, я использую Java и Spring для веб-приложения.
У меня есть объект (ObjectBean), который содержит наложение (наложение) типа EnumnnerObject в качестве атрибута. Я передаю этот объект в качестве компонента из моего контроллера на мой вид .jsp. Я использую следующий код .jsp, чтобы связать флажки:
<form:form commandName="objectBean" name="whatever" action="./save.htm" method="post">
<form:checkboxes items="${allOptions}" path="enumSet" />
</form:form>
вот мой initbinder контроллера:
@InitBinder
protected void initBinder(WebDataBinder binder) throws Exception{
binder.registerCustomEditor(EnumSet.class, "enumSet", new CustomCollectionEditor(Collection.class){
protected Object convertElement(Object element){
if(element instanceof String){
EnumInnerObject enumInnerObject= EnumInnerObject.valueOf((String)element);
return enumInnerObject;
}
return null;
}
});
в контроллере, я пропускаю alloptions (отдельно от моей фасоли), и это содержит все варианты энумии, так что все флажки отображается. «enumset» - это атрибут начисления с соответствующими значениями, содержащимися (если значение содержится в наложении, то он автоматически проверяет правильное поле в «Alloptions»). Все это работает и .jsp правильно показывает правильные проверенные поля. Однако проблема в том, что я отправляю страницу для сохранения. Я получаю следующую ошибку:
java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String[]] to required type [java.util.EnumSet] for property 'enumSet': PropertyEditor [com.example.controller.MyController$1] returned inappropriate value]
У меня есть чувство, что я должен изменить INITBINDER, чтобы получить форму отправки на работу. Любые идеи ??
Спасибо!