我正在尝试实现模式窗口like this以向用户显示错误消息。我有一个页面,其中包含供用户输入信息的表单,然后单击“提交”将其添加到数据库中。如果数据库返回错误,我希望弹出模态窗口并显示错误消息。
唯一的问题是我无法弹出模态窗口,除非有某种onclick事件。我尝试使用以下代码:
<rich:componentControl for="popup" attachTo="submitButton"
rendered="#{backingBean.isError}" operation="show"
event="onclick"/>
我们的想法是,如果出现错误,支持bean将呈现它,并且确实如此,但只有在之后单击“提交”并点击数据库并返回到表单再次单击“提交”
理想情况下,如果backingBean.isError
返回true,我希望在页面加载时弹出模态窗口,但我觉得我错过了一些可以实现的事情。有什么想法吗?
答案 0 :(得分:3)
使用showWhenRendered
属性:
<rich:modalPanel left="auto" top="250" id="waitpanel"
showWhenRendered="#{backingBean.isError}" minWidth="733" autosized="true">
答案 1 :(得分:3)
使用backbean和“错误标志”的另一种方法是使用FacesMessage
实施例
如果db返回错误,请添加新的FacesMessage
try {
(...)
}
catch (Exception e) {
//If theres a error (db error, java error..) or a "throw new Exception()" (if your db error doesn't make a exception) add the message...
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Error message.");
FacesContext.getCurrentInstance().addMessage(null, facesMsg);
}
正如org.life.java所说,使用showWhenRendered
,但使用facesContext.maximumSeveirity
来显示错误消息
<rich:modalPanel id="messagePanel" showWhenRendered="#{facesContext.maximumSeverity != null}">
<rich:messages .../> or <h:messages .../>
</rich:modalPanel>
仅当至少有一条消息要显示时,模态面板才会显示,并且它将是自动的,您只需要添加FacesMessage
消息可以是FacesMessage.SEVERITY_INFO
,FacesMessage.SEVERITY_WARN
,FacesMessage.SEVERITY_ERROR
和FacesMessage.SEVERITY_FATAL
您可以根据消息类型更改图标和标记,例如:
<rich:modalPanel id="messagePanel" showWhenRendered="#{facesContext.maximumSeverity != null}">
<!-- every severity has a ordinal number, im not sure but 0 = info, 1 = warn, 2 = error and 3 = fatal, i guess -->
<h:panelGrid columns="2" rendered="#{facesContext.maximumSeverity.ordinal == 0}">
<h:graphicImage value="/images/icons/mini_info.gif"/>
<h:outputText value="Information" style="color: blue; font-size: 16px;"/>
</h:panelGrid>
<h:panelGrid columns="2" rendered="#{facesContext.maximumSeverity.ordinal == 2}">
<h:graphicImage value="/images/icons/mini_error.gif"/>
<h:outputText value="Error" style="color: red; font-size: 16px;"/>
</h:panelGrid>
<!-- f:facet to change messsages markers -->
<rich:messages id="mpMessage1">
<f:facet id="mpErrorMarker" name="infoMarker">
<h:outputText value="- "/>
</f:facet>
<f:facet id="mpErrorMarker" name="errorMarker">
<h:outputText value="- "/>
</f:facet>
</rich:messages>
</rich:modalPanel>
此代码将显示带有“标题”和图标的模式,如(errorIcon) - 标题下方的错误和消息。