0

これは、SaveClient()すべてのフィールドが空の場合でも新しいクライアントを作成する私の方法です!

public void SaveClient() {

    client = new Client();
    client.setNom(nom);
    client.setPrenom(prenom);
    client.setAdresse(adresse);
    client.setDomaine(domaine);
    client.setRaisonSociale(raisonSociale);
    client.setDateDAbonnement(dateDAbonnement);
    client.setDateFAbonnement(dateFAbonnement);
    client.setType(type);
    client.setEmail(email);
    client.setnFixe(nFixe);
    client.setnGsm(nGsm);
    client.setnFixe2(nFixe2);
    client.setnGsm2(nGsm2);
    client.setVille(ville);
    client.setPays(pays);

    Set<ConstraintViolation<Client>> violations = validator
            .validate(client);
    basicController.<Client> processValidation(violations);

    if (violations.size() == 0) {
        clientBean.creerClient(client);
        basicController.addMessage(" Client has been created successfully",
                FacesMessage.SEVERITY_INFO, null);}
4

1 に答える 1

0

モデルをバッキング Bean にフラット化および/または複製する代わりに、入力をモデルに直接バインドするだけです。

すなわちしない

@Named
public class Bean {

    private String firstname;
    private String lastname;
    private String address;
    // ...

    public void save() {
        Client client = new Client(firstname, lastname, address /* , ...*/);
        clientService.save(client);
    }

}

<h:inputText value="#{bean.firstname}" />
<h:inputText value="#{bean.lastname}" />
<h:inputText value="#{bean.address}" />
...

しかし、代わりに

@Named
public class Bean {

    private Client client;

    @PostConstruct
    public void init() {
        client = new Client();
    }

    public void save() {
        clientService.save(client);
    }

}

<h:inputText value="#{bean.client.firstname}" />
<h:inputText value="#{bean.client.lastname}" />
<h:inputText value="#{bean.client.address}" />
...

あなたが持っていることを条件に

@Entity
public class Client {

    @NotNull
    private String firstname;

    @NotNull
    private String lastname;

    @NotNull
    private String address;

    // ...
}

このようにして、JSF はクラス内のすべての Bean 検証アノテーションを自動的Clientに考慮します。また、この方法では、不要な重複がなく、コードがはるかに単純になります。

于 2013-09-11T12:37:47.607 に答える