2013-05-06 73 views
0

我想要做的就是像在Primefaces展示(http://www.primefaces.org/showcase/ui/datatableRowSelectionByColumn.jsf)我想更新我的数据表中的行基本行选择的例子。问题是当我点击更新数据表按钮时,对话框出现验证错误。PrimeFaces对话框验证错误

第二件事是什么,是方法的执行时间的顺序(动作更新的onclick-F:setPropertyActionListener)。

<p:commandButton id="updateButtonId" 
            action="#{myController.showCompanyEditPanel}" 
            update=":tabView:companyForm:companyEditPanel" 
            onclick="companyDialog.show()"           
            icon="ui-icon-pencil" title="update"> 
    <f:setPropertyActionListener value="#{company}" target="#{myController.selectedCompany}" /> 
</p:commandButton> 


<p:dialog id="editCompanyDialogId" header="CompanyEdit" widgetVar="companyDialog" resizable="false"> 
    <p:panel id="companyEditPanel" > 
    //some stuff here 
    </p:panel> 
</p:dialog> 

回答

1

你似乎缺少使用<p:commandButton>这里的一大要点,以及因为似乎混合了客户端和服务器端事件。

首先对<p:commandButton>。此组件设计为将POST(部分)表单数据发布到当前URL,执行业务作业(侦听器)方法并返回更新的组件/执行导航。您当然可以将JavaScript事件附加到所有这些属性上。

二,onclick,oncomplete和其他on...属性对应一些客户端事件。特别地,被点击按钮时被触发onclick功能,当DOM的AJAX调用之后已更新oncomplete函数被调用,即在<p:ajax update="...">或简单地在<p:commandButton>update="..."属性指定的元素。

第三,所有动作侦听器(因此,actionListener属性,<f:actionListener>标签,标签<f:setPropertyActionListener>)将是正确的,他们在你的标签中指定的顺序执行,看this answer更多的阐述。最后一个要执行的方法是action方法,在此之后发回响应。