p:在p:datatable的页脚上单击按钮时,growl不闪烁

时间:2013-01-17 05:35:13

标签: jsf-2 primefaces

我使用p:tabview有以下页面,有3个标签。

dashboard.xhtml

<h:body>
    <h:form id="headerForm" prependId="false">
        <p:tabView id="tabView" dynamic="true" cache="true">
            <p:tab id="applicationUserManagementTab"
                title="Application User Mgmt">
                <ui:include src="AppUserManagement.xhtml" />
            </p:tab>
            <p:tab id="userManagementTab" title="User Management">
                //Other code here
            </p:tab>
            <p:tab id="userGroupManagementTab" title="User Group Mgmt">
            </p:tab>
        </p:tabView>
    </h:form>
</h:body>
<p:dialog id="addNewUserDialog" widgetVar="addNewUserDialog" header="${msgs.AppUserMgmt_AppUsers_NewUser_Dialog_Header} ${AppUserManagementBean.applicationName}, ${AppUserManagementBean.groupName}" resizable="false"  
          width="800" showEffect="clip" hideEffect="fold" modal="true">              
    <h:form id="addNewUserform">
        <ui:include src="UMNewUserDialog.xhtml" />
    </h:form>
</p:dialog>

applicationUserManagementTab 标签选择了2 p:selectOneMenu ,我在 p:dataTable 中显示了一些数据。在数据表的页脚中添加了一个按钮新用户。单击该按钮会打开一个对话框,我想接受一些值并保存值。

但是,如果在任何一个p中都没有选择任何值:selectOneMenu被选中,然后如果用户点击新用户按钮我不想显示对话框,而是想要显示使用 p:growl 的错误消息。

applicationUserManagementTab选项卡的代码 AppUserManagement.xhtml

  <?xml version="1.0" encoding="UTF-8"?>
    <ui:composition xmlns:h="http://java.sun.com/jsf/html"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:p="http://primefaces.org/ui">

                            <p:panelGrid id="filterUsers" style="width:100%;">
                                    <p:growl autoUpdate="true" showDetail="true" id="errorsAppUsrMgmt"/>

                                    <p:row>
                                            <p:column style="left: 40%;">                                
                                                    <p:selectOneMenu required="true" value="#{AppUserManagementBean.applicationName}" styleClass="localeSelectClass" id="applicationName">
                                                                                                                            <f:selectItems value="#{AppUserManagementBean.systemDetails}" />
                                                            <p:ajax update="groupName,userList" listener="#{AppUserManagementBean.loadGroupDetails}" />
                                                    </p:selectOneMenu>
                                            </p:column>
                                    </p:row>
                                    <p:row>
                                            <p:column style="left: 40%;">                    
                                                    <p:selectOneMenu required="true" value="#{AppUserManagementBean.groupName}" styleClass="localeSelectClass" id="groupName">
                                                                                                                            <f:selectItems value="#{AppUserManagementBean.groupDetails}" />
                                                            <p:ajax update="userList" listener="#{AppUserManagementBean.loadUserDetails}"/>        
                                                    </p:selectOneMenu>
                                            </p:column>
                                    </p:row>
                                    <p:row>
                                        <p:column>
                                            <p:dataTable id="userList" var="user" value="#{AppUserManagementBean.lstUsrDetails}" 
                                                 rowIndexVar="rowNum">  

                                                        // I have 6 columns displaying the data here

                                                    <f:facet name="footer">  
                                                        <p:commandButton actionListener="#{AppUserManagementBean.validateRequest}" id="addUserButton" value="#{msgs.AppUserMgmt_AppUsers_NewUser_ButtonLabel}" icon="ui-icon-circle-plus" oncomplete="if(args.inValidReq) addNewUserDialog.hide(); else addNewUserDialog.show();"/>
                                                    </f:facet>                                                                                                                                  
                                            </p:dataTable>                                      
                                        </p:column>
                                    </p:row>
                            </p:panelGrid>                        
                    </p:fieldset>                  
    </ui:composition>

单击新用户按钮

时将调用的ActionListener方法
public void validateRequest(){
    if ((applicationName != null && applicationName.equalsIgnoreCase("-1")) || (groupName != null && groupName.equalsIgnoreCase("-1"))) {
        FacesMessage message = addMessage("AddNewDialogError", "AppUserMgmt_AppNameOrGrpName_NotSelected", null);
        message.setSeverity(FacesMessage.SEVERITY_ERROR);           
        RequestContext reqCtx = RequestContext.getCurrentInstance();
        reqCtx.addCallbackParam("inValidReq", "true");
        reqCtx.update(":tabView:errorsAppUsrMgmt");
    }

}

工作正常

当我点击新用户按钮并且在两个p:selectOneMenu组件中未选择任何值时,FacesMessages将添加到FacesContext,但不会立即显示咆哮。只有当我切换标签并返回时,才会显示咆哮声。

我想要实现的目标

在ajax调用完成后,应立即显示咆哮(无需切换选项卡)。

我做错了吗?

我正在使用myfaces 2.0.7,primefaces 3.4,WebSphere Application Server 7.0.0.25

0 个答案:

没有答案
相关问题