我阅读了很多帖子,但我没有找到解决方案。
我有一个名为Utente的对象。
Utente有一个名为autorizzazioniLista的字段
public class Utente{
...
@OneToMany(mappedBy = "utente", fetch = FetchType.EAGER)
@Cascade(CascadeType.ALL)
private List<Autorizzazioni> autorizzazioniLista;
...
}
Autorizzazioni有 3 个字段:id、utente和autorizzazione
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将其相关字段Utente和Autorizzazione设置为空,因此我无法将它们保存在数据库中。
对象Autorizzazioni唯一不为空的字段是id,因为在标签内<form:checkboxes>
我设置为对象AutorizzazioniitemValue
的id
注意:当然我使用一个扩展类,PropertyEditorSupport
以便处理标签内 的对象Autorizzazioni<form:checkboxes>
。
所以,我的最后一个问题是:在控制器(在提交表单后调用的控制器)检索对象 Utente 之前,有没有办法操纵对象Autorizzazioni的字段?
在我使用的控制器(在提交表单后调用的那个)内部@Valid Utente
,所以对象 Utente 的字段必须没有错误。