2013-07-04 4 views
0

리스너와 업데이트가있는 p : poll 태그가있는 jsf 페이지가 있습니다. 업데이트가 호출되었지만 리스너가 업데이트되지 않았습니다.PrimeFaces 폴링 리스너가 호출되지 않음

문제를 <f:validateLongRange> 태그로 좁힐 때까지 jsf 페이지에서 섹션을 천천히 삭제했습니다. 유효성 검사를 제거하면 리스너가 호출되지만 리스너는 호출되지 않습니다.

단순화 된 jsf 페이지는 다음과 같습니다. 유효성 검사가 설문 조사에 문제를 일으키는 이유는 무엇입니까?

나는 primefaces 3.5을 사용하고 당신은 아마 유효성 검사 오류를 가지고 JSF 2.1, 톰캣 (7)에

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 


<ui:composition template="/WEB-INF/templates/BasicTemplate.xhtml"> 

    <ui:define name="menuId"> 
    #{trackTabBean.setCurrentTab(trackTabBean.devicesTab)} 
    </ui:define> 
    <ui:define name="content"> 
    <f:metadata> 
       <f:viewParam name="cgId" value="#{deviceBean.inputControlGroupId}" 
        validatorMessage="Control Group Id must be between 1 and 254"> 
        <f:validateLongRange maximum="254" minimum="0" /> 
       </f:viewParam> 
       <f:viewParam name="devId" value="#{deviceBean.inputDeviceId}" /> 
       <f:event listener="#{deviceBean.loadDevice}" type="preRenderView"></f:event> 
    </f:metadata> 
     <h:form id="deviceForm">    
      test (Load more code here but removed for testing)  
      <p:poll interval="5" listener="#{deviceBean.updateDetails}" update="deviceForm"/> 
     </h:form> 
     <h:form> 

     </h:form> 
    </ui:define> 

</ui:composition> 
</html> 
+0

가능한 복제 [있는 명령/CommandLink는/AJAX 액션/리스너 방법을 호출하거나, 입력 값이 아닌 설정되지/갱신 (https://stackoverflow.com/questions/2118656/commandbutton-commandlink-ajax-action- 리스너 메소드가 아닌 호출 된 또는 입력 값) – Kukeltje

답변

1

리스너가 호출되지 않는 실행. JSF 라이프 사이클 3 단계는 "프로세스 유효성 검사"단계입니다.이 단계가 실패하면 JSF는 즉시 "렌더링 응답"단계 인 6 단계로 이동합니다. 따라서 리스너가 호출되는 단계 5 "호출 응용 프로그램"은 건너 뜁니다.

deviceBean도 inputControlGroupId도 null이 아니어야하며 주어진 제약 조건을 적용해야합니다.

#{deviceBean.inputControlGroupId} 
+0

올바른 음향의 사운드를 제공하는 고맙습니다. 그러나 _deviceBean_도 _inputControlGroupId_도 null이지만 param이 항상 존재하는 것은 아닙니다. _cgId viewparam_은 선택적 입력 매개 변수이므로 정의되지 않은 경우 문제가 발생하지만 정의 된 경우에는 그렇지 않습니다. 또한 일부 유효성 검사 예외가 발생하지 않는 이유는 무엇입니까? 내 경우에는 유효성 검사 태그를 제거 할 수는 있지만 중요한 일이 무엇인지 완전히 이해하는 것이 좋습니다. – ChillyMc

+0

cgId는 선택적 매개 변수이므로이 매개 변수가 설정된 경우에만 유효성 검사 태그를 렌더링해야합니다. 해당 테스트를 추가하여이 작업을 수행 할 수 있습니다. 변수가 설정되지 않았으므로 JSF가 유효성 검사 단계에서이 매개 변수에 액세스하려고 시도 할 때 유효성 검사 예외가 아닌 RuntimeException Nullpointer 예외가 발생합니다. 이것이 프로그램이 충돌하는 이유입니다. – Sonic

관련 문제