如何在弹出窗口中显示个性化错误/警告/信息消息?

时间:2011-02-21 02:28:01

标签: jsf popup message

您好我想在我的应用中显示有关错误或警告的弹出消息,例如,如果用户尝试输入已存在于数据库中的注册表。我正在使用JSF,我的应用程序不会添加已存在于数据库中的注册表,但我需要显示一条消息,通知用户。 感谢。

3 个答案:

答案 0 :(得分:1)

这个答案专门针对icefaces(因为我在评论中读到@Mel正在使用icefaces。

打开冰面弹出窗口:

<ace:dialog widgetWar="mydialog">
    <h:outputText value="This is a dialog" />
</ace:dialog>

然后在你的xhtml代码中调用这个弹出窗口,如下所示: 例如。我正在使用命令链接,单击该按钮可打开弹出窗口。

<h:commandLink onlick="mydialog.show()" action="#{myBean.doSomething()}" />

在对话框中显示消息:

<h:form id="myform">
<ace:dialog id="mydialog" widgetWar="mydialog">
    <h:panelGrid columns="1" width="100%">
        <ace:messages id="allMsgsAdd" initEffect="highlight" for="myform:mydialog" />
    </h:panelGrid>

    <h:outputText value="This is a dialog" />
</ace:dialog>
</h:form>

然后,您可以使用此代码将消息推送到刚刚创建的ace:message

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(SEVERITY_INFO, "My Message", null));

请注意,SEVERITY_INFO是FacesMessage定义的常量。您需要导入它。根据您是否需要向用户显示警告或错误,您可以导入这些

import static javax.faces.application.FacesMessage.SEVERITY_ERROR;
import static javax.faces.application.FacesMessage.SEVERITY_INFO;

另请注意addMessage()方法的第一个参数。你会注意到我作为第一个参数传递null。请参阅here,您会发现第一个参数是客户端ID,这基本上意味着您要将此消息发送到哪个客户端。如果clientId为null,则假定此FacesMessage不与任何特定组件实例关联。因此,页面中的所有消息对话框都将收到此错误/警告。如果您希望在对话框中显示消息,则需要在此处传递对话框客户端ID,如下所示:

FacesContext.getCurrentInstance().addMessage("myform:mydialog", new FacesMessage(SEVERITY_INFO, "My Message", null));

答案 1 :(得分:0)

您可以尝试使用一些现有的开源JSF组件库。其中许多已经提供了弹出式UI。例如,Richfaces提供它。您可以参考此官方链接,了解如何使用:http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_modalPanel.html

答案 2 :(得分:0)

在另一个问题中检查我的asnwer,也许它对你有用

How do I get a richfaces modal window to display without an onclick event?

这将在<rich:modalPanel>中显示您的异常消息(或您在代码中间添加的其他消息)。