我有一个JSF页面,它包含带有primefaces组件的咆哮消息。向导包含一个FlowListener属性。在Flowevent上,咆哮消息应该会触发,但它不是。FlowListener正在工作,因为正在执行与更新咆哮消息无关的代码,但是没有显示咆哮消息。任何帮助修复这一点是非常感谢的。
使用: JSF Mojarra 2.2,Primefaces 4.0,Galssfish 4
我的JSF代码:
<h:form>
<p:growl id="growl" showDetail="true" />
<p:wizard flowListener="#{reviewBean.handleFlow}" >
<p:tab id="Contact" title="Contact Details" >
<p:panel header="#{reviewBean.contactInstr}" >
<p:messages />
<h:panelGrid columns="2" >
<h:outputText value="Address: " />
<p:inputText value="#{reviewBean.contactData.address1}" required="true"
requiredMessage="Address is required" size="50" />
<h:outputText value="Address: " />
<p:inputText value="#{reviewBean.contactData.address2}" size="50" />
<h:outputText value="City: " />
<p:inputText value="#{reviewBean.contactData.city}" required="true"
requiredMessage="City is required" size="50"/>
<h:outputText value="State: " />
<p:selectOneMenu value="#{reviewBean.contactData.state}" >
<f:selectItems value="#{reviewBean.contactData.stateOptions}" />
</p:selectOneMenu>
<h:outputText value="Zip: " />
<p:inputText value="#{reviewBean.contactData.zip}" required="true"
requiredMessage="Zip is required" size="50" />
</h:panelGrid>
</p:panel>
</p:tab>
// Additional tabs omitted .........
</p:wizard>
</h:form>我的豆子里的FlowListener:
public String handleFlow(FlowEvent event) {
String currentStepId = event.getOldStep(); // get current tab
String stepToGo = event.getNewStep(); // get next tab in Flow
RequestContext request = RequestContext.getCurrentInstance();
FacesContext context = FacesContext.getCurrentInstance();
switch (currentStepId) {
case "Contact":
// Save user entered contact information to database
datalist.saveContact(contactData, user.getId());
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Data Saved", "") );
request.update("growl");
break;
// remaining cases omitted ........
}
return stepToGo; // return next tab in Flow
}发布于 2014-07-05 17:19:23
request.update("growl");这是错误的部分。
将id放到表单中,然后引用如下
i.e
request.update("your_form_id:growl");或者,您也可以使用咆哮组件的属性autoUpdate="true"激活咆哮的自动更新功能,并删除备份bean中的request.update()方法调用。
https://stackoverflow.com/questions/24588151
复制相似问题