我对如何在对话框中显示facescontext消息有疑问。这使用了primefaces 4.0,JSF。
我想在弹出对话框中显示facescontext消息(单击另一个对话框中的命令按钮时出现)。
方法1:假设视图文件像
<p:commandButton id=”btn” oncomplete=”dlg.show()”/>
<p:dialod id=”dlg_id” widgetVar=”dlg”>
<h:inputText id=”name”/>
<p:commandButton id=”btn1” actionListener=”someBean.someMethod()” oncomplete=”dlg1.show()”/>
</p:dialog>
<p:dialog id=”dlg1_id” widgetVar=”dlg1”>
<h:messages id=”error_msgs” value=”#{facesContext.messageList}”
</p:dialog>
BackingBean(someBean)
public void someMethod() {
RequestContext.getCurrentInstance().addCallBackParam(“facesMessageAvailable”,true);
FacesContext.getCurrentInstance().addMessage(“error_msgs”,new FacesMessage(…,”Name is Required”,…));
}
上面的方法显示了弹出框。但是,弹出框中显示的值就像javax.beans.context@1ggh34ea。然后我尝试使用UI组件绑定。
方法2:
查看文件
<p:commandButton id=”btn” oncomplete=”dlg.show()”/>
<p:dialog id=”dlg_id” widgetVar=”dlg”>
<h:inputText id=”name”/>
<p:commandButton id=”btn1” actionListener=”someBean.someMethod()” oncomplete=”dlg1.show()”/>
</p:dialog>
<p:dialog id=”dlg1_id” widgetVar=”dlg1”>
<h:outputText id=”msg” binding=”someBean.outText”/>
</p:dialog>
BackingBean(someBean)
private UIComponent outText;
//getter and setter of outText
public void someMethod() {
RequestContext.getCurrentInstance().addCallBackParam(“facesMessageAvailable”,true);
FacesContext.getCurrentInstance().addMessage(outText.getClientId() , new FacesMessage(…,”Name is Required”,…));
}
但是,这显示了一个空白的空弹出窗口。然后,我尝试使用JOptionPane。但是它会产生一些逻辑错误。
我将不胜感激任何帮助。当我从内存中键入代码时,语法可能不正确。
我尝试了您的方法1,发现有一些错误:
<h:messages>
1.您应指定的update
属性<p:commandButton>
。
2.No需要指定value=”#{facesContext.messageList}”
的<h:messages>
(有也没有这样的属性)。
因此,执行完这些操作后,您的代码应如下所示:
<h:form>
<p:commandButton id="btn" oncomplete="dlg.show()"/>
<p:dialog id="dlg_id" widgetVar="dlg">
<h:inputText id="name"/>
<p:commandButton id="btn1" actionListener="#{someBean.someMethod()}" oncomplete="dlg1.show()" update="dlg1_id"/>
</p:dialog>
<p:dialog id="dlg1_id" widgetVar="dlg1">
<h:messages id="error_msgs"/>
</p:dialog>
</h:form>
结果看起来像:
<h:message>
它在<h:messages>
上面使用,虽然您可能想要使用<h:message>
,但您似乎希望使用来显示消息error_msgs
。为此,您需要指定client_id而不是id,因此请尝试以下操作:
页:
<h:form>
<p:commandButton id="btn" oncomplete="dlg.show()"/>
<p:dialog id="dlg_id" widgetVar="dlg">
<h:inputText id="name"/>
<p:commandButton id="btn1" actionListener="#{someBean.someMethod()}" oncomplete="dlg1.show()" update="dlg1_id"/>
</p:dialog>
<p:dialog id="dlg1_id" widgetVar="dlg1">
<h:message for="j_idt5"/>
</p:dialog>
</h:form>
后备豆:
public void someMethod(){
RequestContext.getCurrentInstance().addCallbackParam("facesMessageAvailable",true);
FacesContext.getCurrentInstance().addMessage("j_idt5",new FacesMessage("Name is Required"));
}
请注意,这j_idt5
是的client_id <h:inputText>
。
我怎么知道client_id?只需右键单击浏览器中的页面并查看页面源代码,查看您感兴趣的组件,即可找到cliend_id。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句