0

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

第二件事是方法执行时间的顺序是什么。(action-update-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>
4

1 回答 1

1

您似乎错过了<p:commandButton>在此处使用 a 的一个要点,并且似乎在混合客户端和服务器端事件。

首先在<p:commandButton>. 该组件旨在将(部分)表单数据发布到当前 URL,在 action(listener) 方法中执行业务工作并返回更新的组件/执行导航。您当然可以将 JavaScript 事件“附加”到所有这些属性。

其次,onclickoncomplete、 等on...属性对应一些客户端事件。特别onclick是点击按钮时触发oncomplete函数,在AJAX调用后更新DOM时调用函数,即在属性中指定<p:ajax update="...">或简单地在update="..."属性中指定的元素<p:commandButton>

第三,所有动作侦听器(因此,actionListener属性,<f:actionListener>标签,<f:setPropertyActionListener>标签)将按照它们在标签中指定的顺序正确执行,有关详细信息,请参阅此答案。最后一个要执行的是action方法,然后返回响应。

于 2013-05-06T10:01:43.700 回答