2009-03-24 7 views
0
문제는이 코드를 발생

: 우리가 나는 값이 볼 수 있듯이JSF의 F : 시간의 selectItem는 : selectManyCheckbox는 콩을 백업에서 일하고 있지만, 제대로 표시 시간에하지 : 데이터 테이블

<h:form> 
    <rich:panel> 
     <f:facet name="header"> 
      <h:selectManyCheckbox title="Select which types of requests you want to see" 
            onchange="submit();" value="#{filterListener.chosenFilters}" 
            id="selectBoxContainer" > 
       <f:selectItem id="approvedByITS" itemLabel="Approved by ITS" itemValue="approvedByITS" /> 
       <f:selectItem id="approvedByPO" itemLabel="Approved by Process Owner" itemValue="approvedByPO" /> 
       <f:selectItem id="dob" itemLabel="Date" itemValue="dob" /> 
       <f:selectItem id="externalAssignedTo" itemLabel="External assigned" itemValue="externalAssignedTo" /> 
       <f:selectItem id="internalAssignedTo" itemLabel="Internal assigned" itemValue="internalAssignedTo" /> 
       <f:selectItem id="ITSapprovedBy" itemLabel="ITS approved by" itemValue="ITSapprovedBy" /> 
       <f:selectItem id="severity" itemLabel="Severity" itemValue="severity" /> 
       <f:selectItem id="status" itemLabel="status" itemValue="status" /> 
       <f:valueChangeListener type="no.ngt.tech.rt2.listeners.requestFilterListener" /> 
      </h:selectManyCheckbox> 
     </f:facet> 

     <h:dataTable value="#{filterListener.chosenFilters}" var="selects" > 
      <h:column> 
       <h:outputText value="#{selects}" /> 
      </h:column> 
     </h:dataTable> 
     <br /> 
     <h:messages /> 

    </rich:panel> 
</h:form> 

= "# {filterListener.chosenFilters} ". dataTable의 값도 동일하므로 selectItem 중 하나를 클릭 할 때마다 dataTable에 요소가 추가되거나 제거됩니다 (현재 작동 중임). 내 백업 콩에서 나는 다음과 같은 코드를 가지고 : 나는 확인란 중 하나를 클릭

public class requestFilterListener implements ValueChangeListener { 

    private List<String> chosenFilters; 

    public requestFilterListener() { 
    } 

    public void processValueChange(ValueChangeEvent event) { 
     System.out.println("processValueChange called"); 
     if (chosenFilters != null) { 
      System.out.println(chosenFilters.size()); 
     } 
    } 

    public List<String> getChosenFilters() { 
     return chosenFilters; 
    } 

    public void setChosenFilters(List<String> chosenFilters) { 
     this.chosenFilters = chosenFilters; 
    } 

매번, 열이 내 콘솔 내가 메시지 "라고 processValueChange"을 얻을, 적절한 데이터 삭제/추가됩니다 같은 I 출력 processValueChange 메소드에서,이 시간 동안 selectedFilters는 항상 널이고 if 표현식은 실행되지 않습니다. 어째서? 이것은 세션 빈입니다. 왜 내 목록이 배킹 빈 내에서 사용될 수없는 지 이해할 수 없지만 내 dataTable에서 문제없이 사용됩니다.

감사의 말씀에 감사드립니다.

답변

0

문제는이 태그에 아마도 :

<f:valueChangeListener type="no.ngt.tech.rt2.listeners.requestFilterListener" /> 

당신은 관리 빈 구성에 의해 지정된 하나에 requestFilterListener 대신 바인딩의 새 인스턴스를 만들려면 f:valueChangeListener 태그를 지시한다. 바인딩 속성을 사용하여 # {filterListener}에 바인딩합니다.