2013-05-06 2 views
0

내가 원하는 것은 Primefaces 쇼케이스 (http://www.primefaces.org/showcase/ui/datatableRowSelectionByColumn.jsf)의 기본 행 선택 예와 같습니다. 데이터 테이블의 행을 업데이트하고 싶습니다. 문제는 내가 datatable에서 버튼을 클릭하여 업데이트 할 때 유효성 검사 오류가있는 대화 상자가 나타나는 것입니다.PrimeFaces 대화 상자 유효성 검사 오류

두 번째 것은 방법의 실행 시간의 순서입니다 것입니다 (액션 갱신 온 클릭-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 함수가 트리거되고, oncomplete은 AJAX 호출 후에 DOM이 업데이트 될 때 호출됩니다. 즉, <p:ajax update="..."> 또는 update="..." 속성에 지정되는 요소는 <p:commandButton>입니다.

셋째, 모든 액션 청취자는 (따라서, actionListener 속성 <f:actionListener> 태그, <f:setPropertyActionListener> 태그) 더 정교에 대한 this answer를 참조, 바로 그들이 당신의 태그에 지정된 순서대로 실행됩니다. 실행될 마지막 것은 action 메쏘드이고, 그 후에 응답이 되돌려 보내집니다.

관련 문제