2016-04-28 5 views
0

はっきりとしたアプリケーションです。私はメッセージを表示し、メッセージの種類でdivの色を変更するdivを作成したいと思います。jsf divに適用されるcssスタイルをメッセージタイプで変更するにはどうすればよいですか?

<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> 

私のdivは、テンプレートXHTMLで定義されています:

<div class="alert alert-dismissible alert-danger" id="msg2"> 
      <ui:insert name="msg"></ui:insert> 

生成するには、私は私のJSFファイルでこのコードを持っている瞬間

メッセージjsfUtil.javaでいくつかの関数を使用しました:

メッセージ生成
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); 
} 
} 

機能の例:この時点で、すべてのメッセージを

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

はdiv要素の中に表示されますが、私はdiv要素は、(メッセージタイプの機能にメッセージを表示する方法を変更したいです例:グリーンok;黄色の警告;赤色のエラー)。

この関数によって生成されたメッセージの関数でCSSスタイルをdivにリンクするにはどうすればよいですか?

+0

この質問は奇妙です。答えは "infoClass'、' warnClass'、 'errorClass'、' fatalClass' "です。しかし、あなたはすでにそれを使用しています。私はどこにもCSSが見えませんが、あなたの実際の質問は、CSSを書く方法がわからないということです。 – BalusC

+0

私はCSSをインクルードするのを忘れましたが、メッセージが現時点で生成されたときにはCSSだけがdivに色付けされます。私はエラーの種類に応じてdivの色を選択することができるように探しています – Ersch

答えて

0

CSSファイルを作成し、このクラスが含まれます:

.info{ 
    background-color: green; 
} 

.warn{ 
    background-color: yellow; 
} 

.err{ 
    background-color: red; 
} 

次に、あなたがこのようなCSSファイルを含めるセクションで、あなたの主なXHTMLで:

<link href="#/[pathToMyCssFile]" rel="stylesheet" type="text/css" /> 

編集

h:messagesidを追加する必要があります(1つしか必要ありません.cssクラスは自動的に適用されます)。 atically

<h:messages id="messages" globalOnly="true" errorClass="err" warnClass="warn" infoClass="info"></h:messages> 

あなたはあなたが例えばメッセージ を追加する方法には、このIDを追加する必要があります)重要度に応じて:

public static void addErrorMessage(String msg) { 
    FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg); 
    FacesContext.getCurrentInstance().addMessage("messages", facesMsg); 
} 



public static void addSuccessMessage(String msg) { 
    FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg); 
    FacesContext.getCurrentInstance().addMessage("messages", facesMsg); 
} 
+0

ありがとうが、どのようにdivで使用されるクラスを動的に割り当てることができますか? 私が言ったように、生成されたメッセージに応じて.info .warn .errクラスを適用したいと思います。 – Ersch

+0

@Erschはdivを意味します.h:メッセージですか? – raven

+0

私は1つのdivを使用したいが、メッセージの種類に応じて背景色を変更できるようにしたい。 これは現時点でのdivへのコードです: ' – Ersch

関連する問題