primefaces咆哮重新显示以前的消息

时间:2011-06-09 14:17:32

标签: jsf primefaces

我有一个表格,其中包含数据表中的列表。要向列表中添加新记录,请单击“添加”,然后会出现对话框<p:dialog>,其中包含2列的任何空数据表都有两个要填充的输入文本框。在对话框中,我有“保存”和“取消”按钮。单击“保存”按钮后,新记录应保存到数据库中,表单中的列表应显示新记录。数据表具有主要行内联行编辑功能。我正在使用growl来显示错误消息。一旦我用空数据更新我的记录,它就会显示所需的消息。但是,当我单击“添加”按钮时,它再次显示相同的必需消息。它显示上一个错误。我不想那样。在这种情况下,有人可以帮助我。 “添加”是一个ajax请求。     

<h:body>
<ui:composition template="/WEB-INF/facelets/template/adminLayout.xhtml">
    <ui:define name="view"> 
<h:form id="myForm" prependId="false">


<div class="header" >
    <div class="titleColor">
        T_COD_Prefil
    </div>
</div>

<div class="divPosition">
<p:dataTable var="profile" id="profileTable" value="#{profileView.profileModelList}" rowEditListener="#{profileView.rowEditListener}" onRowEditUpdate="buttonPanel" >
                    <p:column style="width:60px;">                  
                        <p:rowEditor/> 
                        <h:commandButton  style="padding-left:5px;" image="/resources/images/delete.jpeg" styleClass="spa"  value="delete" immediate="true" actionListener="#{profileView.delete}" >
                            <f:attribute name="delteProfile" value="#{profile}" />
                        </h:commandButton>                          
                    </p:column>

                    <p:column>                                  
                        <f:facet name="header">
                            <h:outputText value="IDprefil" />
                        </f:facet>                          
                        <h:outputText value="#{profile.profileId}" />

                    </p:column>

                    <p:column>                  
                        <f:facet name="header">
                            <h:outputText value="description" />
                        </f:facet>                      
                        <p:cellEditor>                      
                            <f:facet name="output">
                                <h:outputText value="#{profile.profileDescription}" />
                            </f:facet>
                            <f:facet name="input">
                                <h:inputText required="true" requiredMessage="#{msg.desProfileEmpty}" maxlength="255"  value="#{profile.profileDescription}" />
                            </f:facet>                          
                        </p:cellEditor>
                    </p:column>                 
                </p:dataTable>

        </div>
        <div class="divButPosition">

        <h:panelGroup id="buttonPanel">

            <p:commandButton id="buttons" value="Add" actionListener="#{profileView.addEmptyProfile}"
            async="true" update="myForm" rendered="#{!profileView.addNewRow}" oncomplete="profileDialog.show();" />

        </h:panelGroup>

    </div>

    <p:growl id="growl" showDetail="false" />  
<p:dialog id="profileDialog" header="Profile Detail" prependId="false" widgetVar="profileDialog" resizable="false" width="500" showEffect="explode" hideEffect="explode" modal="false" closable="false">

<h:dataTable var="newProfile" value="#{profileView.newProfile}">
    <h:column>
        <f:facet name="header">
            <h:outputText value="IDprefil" />
        </f:facet>
        <h:inputText value="#{newProfile.profileId}" required="true" requiredMessage="not empty" />
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="description" />
        </f:facet>
        <h:inputText value="#{newProfile.profileDescription}" required="true" requiredMessage="Desctiption should not be empty" />
    </h:column>
</h:dataTable> 
<p:commandButton value="Save"  actionListener="#{profileView.saveProfile}" async="true" update="growl,buttonPanel,profileTable" oncomplete="handleRequest(args ,document.getElementById('profileDialog'))" />
<p:commandButton value="Cancel" immediate="true" update="buttonPanel" async="true"  actionListener="#{profileView.cancelProfile}" oncomplete="profileDialog.hide();" />

</p:dialog> 
</h:form>  

    

2 个答案:

答案 0 :(得分:1)

尝试在代码顶部编写咆哮,并在单击按钮时更新它。 好吧,不能在IE8上工作。

答案 1 :(得分:0)

单击提交按钮后,将首先验证所有字段,如果其中一些字段为空,则会弹出所需的消息。因此请保持在不同标签下提交相关数据。不同提交按钮的基本不同形式