【发布时间】: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?
【问题讨论】:
-
这个问题很奇怪。答案是“使用
infoClass、warnClass、errorClass、fatalClass”。但是你已经在使用它了。虽然我看不到 CSS,但我认为您的实际问题是您不知道如何为此编写 CSS? -
我忘记包含 css 但 css 仅在生成消息时为 div 着色。我希望能够根据错误类型选择 div 的颜色