Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring表单一对多绑定对象_Java_Spring_Jsp_Spring Mvc_Spring Form - Fatal编程技术网

Java Spring表单一对多绑定对象

Java Spring表单一对多绑定对象,java,spring,jsp,spring-mvc,spring-form,Java,Spring,Jsp,Spring Mvc,Spring Form,我有个问题。 我使用Spring Mongo数据、Web、mvc ecc。。。 我想将一个复杂对象与其依赖项绑定,但我的解决方案不起作用 代码如下: 模型 public class Foo { @Id private String id; private String nome; private String descrizione; private Date dataCreazione; private Date dataUltimaModific

我有个问题。 我使用Spring Mongo数据、Web、mvc ecc。。。 我想将一个复杂对象与其依赖项绑定,但我的解决方案不起作用

代码如下:

模型

public class Foo {

   @Id
   private String id;

   private String nome;

   private String descrizione;

   private Date dataCreazione;

   private Date dataUltimaModifica;

   @DBRef
   private Dependency dependency;   //getters and setters
}


public class Dependency {
   @Id
   private String id;

   @Indexed(unique = true)
   private String nome;

   private String descrizione;

   private Date dataCreazione;

   private Date dataUltimaModifica;

  //GETTERS AND SETTERS
}

控制器

@RequestMapping(value = Constants.ADD, method = RequestMethod.GET)
public String add(Model model) {

    Foo foo = new Foo();
    model.addAttribute("fooForm", foo);
    model.addAttribute("depList",depService.getList());

    return "foo/add";
}

@RequestMapping(value = Constants.ADD, method = RequestMethod.POST)
public String addPost(@ModelAttribute("fooForm") Foo foo, BindingResult result, Model model) {
   //Check if foo is not null
}
看法


提前谢谢。

我找到了解决方案!这很简单

我们需要一个转换器对象,因为绑定的表单返回依赖项ID,而不是整个对象

这就是解决方案:

转换器


    public class DependencyConverter implements Converter {
        @Autowired
        private CategoriaRepository repository;

        @Override
        public Categoria convert(String id) {
            return repository.findById(id);
        }
    }
    
现在,我们在application-context.xml中注册转换器

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService"
    class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="myPackage.DependencyConverter" />
        </set>
    </property>
</bean>

就这些

我希望这将有助于未来


再见…

依赖关系是一个对象。这个对象的类在哪里(请在帖子中更新)。非常感谢您的快速回复。我已经用dependency对象更新了我的帖子depService.getList()返回什么?您是否看到依赖项选择中填充了选项?depService.getList()返回一个列表。。我尝试过使用另一个函数depService.getMap(),该函数返回HashMap(key,value…,其中key是id,Dependency是整个对象,但不起作用>

    public class DependencyConverter implements Converter {
        @Autowired
        private CategoriaRepository repository;

        @Override
        public Categoria convert(String id) {
            return repository.findById(id);
        }
    }
    
<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService"
    class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="myPackage.DependencyConverter" />
        </set>
    </property>
</bean>