首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><p:growl>未在<p:wizard> FlowListener上执行

<p:growl>未在<p:wizard> FlowListener上执行
EN

Stack Overflow用户
提问于 2014-07-05 15:57:22
回答 1查看 1.8K关注 0票数 1

我有一个JSF页面,它包含带有primefaces组件的咆哮消息。向导包含一个FlowListener属性。在Flowevent上,咆哮消息应该会触发,但它不是。FlowListener正在工作,因为正在执行与更新咆哮消息无关的代码,但是没有显示咆哮消息。任何帮助修复这一点是非常感谢的。

使用: JSF Mojarra 2.2,Primefaces 4.0,Galssfish 4

我的JSF代码:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 17:19:23

代码语言:javascript
复制
request.update("growl");

这是错误的部分。

将id放到表单中,然后引用如下

i.e

代码语言:javascript
复制
request.update("your_form_id:growl");

或者,您也可以使用咆哮组件的属性autoUpdate="true"激活咆哮的自动更新功能,并删除备份bean中的request.update()方法调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24588151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档