您好我想在我的应用中显示有关错误或警告的弹出消息,例如,如果用户尝试输入已存在于数据库中的注册表。我正在使用JSF,我的应用程序不会添加已存在于数据库中的注册表,但我需要显示一条消息,通知用户。 感谢。
答案 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>
中显示您的异常消息(或您在代码中间添加的其他消息)。