0

多くの投稿を読みましたが、解決策が見つかりませんでした。

Utenteというオブジェクトがあります。

UtenteにはautorizzazioniListaというフィールドがあります

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

Autorizzazioniにはidutenteautorizzazioneの 3 つのフィールドがあります。

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;
    ...
}

そしてこれがアウトリザツィオーネ

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が null に設定されているため、DB に保存できません。

null ではないAutorizzazioniオブジェクトの唯一のフィールドはidです。これは、タグ内でオブジェクトAutorizzazioniID<form:checkboxes>として設定されているためです。itemValue

: もちろん、タグ内の AutorizzazioniPropertyEditorSupportオブジェクトを処理するために、拡張するクラスを使用します。<form:checkboxes>

それで、私の最後の質問は、オブジェクト Utente がコントローラー (フォームの送信後に呼び出されるもの) によって取得される前に、オブジェクト Autorizzazioni のフィールドを操作する方法はあります?

コントローラー (フォームの送信後に呼び出されるコントローラー) 内で を使用@Valid Utenteしたため、オブジェクト Utente のフィールドにエラーがあってはなりません。

4

0 に答える 0