Java <;mvc:注释驱动/>;并绑定到集合

Java <;mvc:注释驱动/>;并绑定到集合,java,spring-mvc,Java,Spring Mvc,自从包含以来,我在将multi-select列表框的选择绑定到命令bean上相应的列表属性时遇到了一个问题。在引入之前,它工作正常 我有一个自定义集合编辑器: @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(List.class, new CustomCollectionEditor(List.class) { protected Object conv

自从包含
以来,我在将multi-select列表框的选择绑定到命令bean上相应的列表属性时遇到了一个问题。在引入
之前,它工作正常

我有一个自定义集合编辑器:

@InitBinder
public void initBinder(WebDataBinder binder) {
   binder.registerCustomEditor(List.class, new CustomCollectionEditor(List.class) {
      protected Object convertElement(Object element) {         
         String fieldName = (String)element;

         for (Field field : fields) {
            if (field.getFieldName().equals(fieldName))
               return field;
         }

         return element;
      }
   });
}
这将导致表单控制器接收表示列表选择的
列表。然而,由于使用了
,我现在得到的是一个
列表


有人能帮我们弄清楚这种行为吗

这可能不太接近,但

如果您创建自己的
AnnotationMethodHandlerAdapter
以在其上设置自定义
webBindingInitializer
,则需要在
AnnotationMethodHandlerAdapter
之后设置
,否则由
创建的将被使用,并且您的自定义活页夹将不被使用

如果它不是最后一个,请尝试移动它


除此之外,我只能建议在活页夹内设置一个断点,以查看是否调用它。

这可能不太接近,但

如果您创建自己的
AnnotationMethodHandlerAdapter
以在其上设置自定义
webBindingInitializer
,则需要在
AnnotationMethodHandlerAdapter
之后设置
,否则由
创建的将被使用,并且您的自定义活页夹将不被使用

如果它不是最后一个,请尝试移动它


除此之外,我只能建议在活页夹内设置一个断点,以查看是否调用它。

谢谢!那真是太棒了!我把“AnnotationMethodHandlerAdapter”放在了“最上面的开始”的下面,把它们调换了,现在一切都很好!我很高兴它能工作:)正常情况下,订单不会在spring配置中导入,所以当它被导入时,它会对您有点影响。谢谢!那真是太棒了!我把“AnnotationMethodHandlerAdapter”放在了“最上面的开始”的下面,把它们调换了,现在一切都很好!我很高兴它能工作:)通常情况下,订单不会在spring配置中导入,所以当它被导入时,它会对您有点影响。