私はJavaとSpringをWebアプリケーション用に使用しています。バインディングスプリング:送信時にenumsetするチェックボックスでエラーが発生する
私は属性としてEnumInnerObject型のEnumSet(enumSet)を含むオブジェクト(objectBean)を持っています。このオブジェクトを私のコントローラから.jspビューにBeanとして渡しています。私は、チェックボックスをバインドするために、次の.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を通過し、これがすべて含まれていEnumInnerObjectオプションを使用すると、すべてのチェックボックスが表示されます。 "enumSet"は適切な値を含むEnumSet属性です(値がEnumSetに含まれている場合、 "allOptions"の正しいボックスが自動的にチェックされます)。これはすべて動作し、.jspは正しいチェックボックスを正しく表示します。しかし、問題は私が保存するページを提出するときです。私は、フォームは仕事に提出得るためにInitBinderを変更する必要が感じている
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]
:私は次のエラーを取得します。何か案は??
ありがとうございます!