Bonjour à tous,

dans le cadre d'une application crud je voudrais créer un div qui affiche un message en fonction du résultat de la transaction. J'ai également un code pour changer la couleur de ce div.

Pour le moment j'ai ce code dans mon fichier .jsf

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
<ui:define name="msg">
        <h:messages globalOnly="true" errorClass="err" warnClass="warn" infoClass="info"></h:messages>
        <h:messages globalOnly="false" errorClass="err" warnClass="warn" infoClass="info"></h:messages>
</ui:define>
Mon div est défini dans un template xhtml:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<div class="alert alert-dismissible alert-danger" id="msg2">
                <ui:insert name="msg"></ui:insert>
</div>
Pour générer le message j'ai cette fonction dans ma classe jsfUtil.java:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
 
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package UI.util;
 
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.model.SelectItem;
 
/**
 *
 * @author Ersch
 */
public class JsfUtil {
 
    public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne){
        int size = selectOne ? entities.size() + 1 : entities.size();
        SelectItem[] items = new SelectItem[size];
        int i = 0;
        if (selectOne){
            items[0] = new SelectItem("", "---");
            i++;
        }
        for (Object x : entities){
            items[i++] = new SelectItem(x, x.toString());
        }
        return items;
    }
 
    public static void addErrorMessage(Exception ex, String defaultMsg) {
        String msg = ex.getLocalizedMessage();
        if (msg != null && msg.length() > 0) {
            addErrorMessage(msg);
        } else {
            addErrorMessage(defaultMsg);
        }
    }
 
        public static void addErrorMessages(List<String> messages) {
        for (String message : messages) {
            addErrorMessage(message);
        }
    }
 
    public static void addErrorMessage(String msg) {
        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
        FacesContext.getCurrentInstance().addMessage(null, facesMsg);
    }
 
        public static void addSuccessMessage(String msg) {
        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
        FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg);
    }
 
    public static String getRequestParameter(String key) {
        return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
    }
 
    public static Object getObjectFromRequestParameter(String requestParameterName, Converter converter, UIComponent component) {
        String theId = JsfUtil.getRequestParameter(requestParameterName);
        return converter.getAsObject(FacesContext.getCurrentInstance(), component, theId);
    }
 
}
Exemple d'une fonction qui retourne un msg:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public String doUpdate() {
        try {
            modelFacade.edit(current);
            items = new ListDataModel(modelFacade.find(new ModelSearch()));
            current = (Model) getItems().getRowData();        
 
            JsfUtil.addSuccessMessage("Mise à jour Executée");
            return "Model.xhtml";
        } catch (Exception e) {
            return null;
        }
}
Pour le moment je capte les messages pour me dire qu'une transaction est ok (ou pas) mais je voudrais pouvoir changer le style que j'applique à mon div en fonction du type de message (ex: vert ok, jaune attention, rouge erreur). Je peux retourner un JsfUtil.addErrorMessage(String msg) avec mon message d'erreur mais comment est ce que je peux gérer le style que l'applique à un div à partir de là?


Je vous remercie d'avance pour votre aide.

Ersch