0

我阅读了很多帖子,但我没有找到解决方案。

我有一个名为Utente的对象。

Utente有一个名为autorizzazioniLista的字段

public class Utente{
    ...
    @OneToMany(mappedBy = "utente", fetch = FetchType.EAGER)
    @Cascade(CascadeType.ALL)
    private List<Autorizzazioni> autorizzazioniLista;
    ...
}

Autorizzazioni有 3 个字段:idutenteautorizzazione

public class Autorizzazioni {
    ...
    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id; 

    @ManyToOne(targetEntity = Utente.class, fetch = FetchType.EAGER)    
    private Utente utente;

    @ManyToOne(targetEntity = Autorizzazione.class, fetch = FetchType.EAGER)
    private Autorizzazione autorizzazione;
    ...
}

这是Autorizzazione

public class Autorizzazione{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id", nullable=false, updatable=false)
    private int id;     

    @Column(name = "descrizione")
    private String descrizione;
}

我有一个Utente作为 modelAttribute 的表单。在此表单中,字段autorizzazioniLista的对象Autorizzazioni必须显示为复选框;这里开始我的问题。

这是显示复选框的 jsp 页面:

  <form:checkboxes
          items="${utente.autorizzazioniLista}"
          path="autorizzazioniLista"
          itemValue="id" delimiter="<br><br>"
          itemLabel="autorizzazione.descrizione" />

当我提交表单并在控制器中检索对象 Utente 时, 字段autorizzazioniLista中的对象Autorizzazioni将其相关字段UtenteAutorizzazione设置为空,因此我无法将它们保存在数据库中。

对象Autorizzazioni唯一不为空的字段是id,因为在标签内<form:checkboxes>我设置为对象AutorizzazioniitemValueid

注意:当然我使用一个扩展类,PropertyEditorSupport以便处理标签内 的对象Autorizzazioni<form:checkboxes>

所以,我的最后一个问题是:在控制器(在提交表单后调用的控制器)检索对象 Utente 之前,有没有办法操纵对象Autorizzazioni的字段?

在我使用的控制器(在提交表单后调用的那个)内部@Valid Utente,所以对象 Utente 的字段必须没有错误。

4

0 回答 0