2014-05-15 3 views
0

저는 프라임 표면을 사용하여 응용 프로그램을 개발 중입니다. 나는 AP 통신이 : 이제 문제primefaces를 사용한 조건부 검사

public List<RecordDTO> getRecordList() { 
     boolean flag=true; 
     try { 
      if(dataList==null){ 
       //logic here 
       flag=false; 
      } 
      if(dataList!=null){ 
       //Logic here 
      } 
     } catch (Exception e) { 

     } 
     return dataList; 
    } 

:

아래

<f:facet name="header"> 
    <h:outputText value="SALES Information" /> 
    <p:commandLink action="#{showMB.recordList}" update="salesInfo" ajax="true"> 
     <h:graphicImage library="images" name="show.jpg" title="Show Sales" height="20px;" width="20px;"/> 
    </p:commandLink> 
</f:facet> 

가 ManagedBean은의 방법입니다 : commandLink.Below이 records.xhtml 샘플 코드 : 새로 고침 아이콘과 데이터 테이블이 페이지를 사용하여 만든 p : commandLink 버튼을 클릭하면 컨트롤이 항상 제 2 상태가됩니다.

좋습니다. 감사합니다. .

+0

게터 대신에 메서드를 사용하지 않는 이유는 무엇입니까? 데이터 테이블은 목록의 가져 오기 도구로 피드되므로 대상 목록을 편집하고 데이터 테이블을 업데이트하기 만하면됩니다. 이 작업을 수행하는 방법을 이해하지 못합니다 ... –

+0

명시 적으로 dataList를 null로 설정 한 commandLink에 actionListener를 추가하십시오. actionListener가 먼저 조치 전에 실행됩니다. 그러면 조치 메소드 실행 전에 datalist가 null로 설정됩니다. 그러나 이상적으로 이벤트 소스 구성 요소 인스턴스가 필요한 백엔드에서 필요할 때만 actionListener를 사용해야합니다. 희망이 도움이됩니다. –

+0

@SrikanthGanji - 언급 한대로 수정되었지만 여전히 컨트롤은 if (dataList! = null && flag) {...}입니다. 위의 게시물에서 수정 한 코드를 확인하십시오. – user3633028

답변

0

명시 적으로 datalist를 null로 지정할 별도의 actionListener가 있어야합니다.

public void actionListener(javax.faces.event.ActionEvent event) { 

     datalist=null; 
    } 

그리고 지금 CommandLink는 당신이 액션 메소드 실행 전에 null로 DataList에 설정을해야합니다 그래서

<p:commandLink action="#{showMB.getRecordList}" 
    actionListener="#{showMB.actionListener}" update="recordsInfo" 
    action="#{showMB.recordList}" ajax="true"> 
    <h:graphicImage library="images" name="show.jpg" title="Refresh"/> 
</p:commandLink> 

의 ActionListener가 먼저 행동하기 전에 실행해야합니다.

그러나 이상적으로 이벤트 소스 구성 요소 인스턴스가 필요한 백엔드에서 필요할 때만 actionListener를 사용해야합니다.

희망이 도움이됩니다.