2016-04-28 57 views
0

對於crud應用程序我想創建一個div,我想顯示一條消息並使用消息類型更改div的顏色。如何用一種消息更改應用於jsf div的css樣式?

目前,我有這樣的代碼在我的JSF文件:

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

要生成消息我在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如何在消息類型的函數顯示該消息(例如:綠色好的;黃色警告;紅色錯誤)。

如何在本函數生成的消息函數中將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; 
} 

然後在節的主要XHTML你包括CSS文件是這樣的:

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

編輯

你需要添加一個id到你的h:messages(只有一個是必要的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

我想使用一個div,但能夠根據消息類型更改背景顏色。 這是現在的代碼: ' ' – Ersch