2016-04-28 68 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