【问题标题】:How change the css style applied to a jsf div with a type of message?如何使用消息类型更改应用于 jsf div 的 css 样式?
【发布时间】:2016-04-28 12:27:22
【问题描述】:

对于一个 crud 应用程序,我想创建一个 div,我想在其中显示一条消息并根据消息类型更改 div 的颜色。

目前我的 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?

【问题讨论】:

  • 这个问题很奇怪。答案是“使用infoClasswarnClasserrorClassfatalClass”。但是你已经在使用它了。虽然我看不到 CSS,但我认为您的实际问题是您不知道如何为此编写 CSS?
  • 我忘记包含 css 但 css 仅在生成消息时为 div 着色。我希望能够根据错误类型选择 div 的颜色

标签: css jsf messages


【解决方案1】:

创建一个 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 类将根据严重性自动应用)

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

【讨论】:

  • 谢谢,但是如何动态分配 div 使用的类?正如我所说,我想根据生成的消息应用 .info .warn .err 类
  • @Ersch 哪个 div 表示你的 h:messages 是什么意思?
  • 我想使用单个 div 但能够根据消息类型更改背景颜色。这是此刻进入 div 的代码:&lt;h:messages globalOnly="true" errorClass="err" warnClass="warn" infoClass="info"&gt;&lt;/h:messages&gt; &lt;h:messages globalOnly="false" errorClass="err" warnClass="warn" infoClass="info"&gt;&lt;/h:messages&gt;
  • 我不确定结果,我想改变div的背景颜色。所以函数 addSuccessMessage 应该定义 div 的 css 样式而不是
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 2011-08-23
  • 2017-03-09
  • 1970-01-01
  • 2018-06-23
  • 2018-04-24
  • 1970-01-01
  • 2015-02-14
相关资源
最近更新 更多