2013-08-14 5 views
0

JSF 1.1에서 값 전달과 관련하여 많은 문제가 있습니다. bean에서 JSF 페이지로 값을 전달하지만, 다시 전달되지 않아 NullPointerException이 발생합니다. bean의 declareFinishList는 페이지에 표시 할 초기화 메소드에 의해 채워지지만 제출하면 for (DeclareFinish df : declareFinishList)에 nullpointer 예외가 발생하여 다시 전달되지 않음을 나타냅니다. 지도 declaredFinishMap 또한 null로 나옵니다. 나는 전에이 일을했기 때문에이 다른 하나가 문제가되는 이유를 이해하지 못한다. 다른 비슷한 테이블은 잘 작동한다.빈에서 JSF 값이 업데이트되지 않습니다.

편집 : 세션 범위에 배치하여 declareFinishList을 전달할 수 있었지만 여전히 declaredFinishMap을 전달할 수 없습니다.

bean은 faces-config.xml의 rsaleController에 의해 정의됩니다. 전체 페이지는 내가 포함시키지 않은 h : 형태로 싸여 있습니다.

콩 :

public class RetailSaleController extends BaseBean { 
    private List<DeclareFinish>  declareFinishList; 
    private Map<DeclareFinish, Boolean> declaredFinishMap = new LinkedHashMap<DeclareFinish, Boolean>(); 

    public void saveDeclareFinishList(ActionEvent event) { 
    List<DeclareFinish> list = new ArrayList<DeclareFinish>(); 
     for (DeclareFinish df : declareFinishList) { 
      if(declaredFinishMap.get(df)) { 
       list.add(df); 
      } 
     } 
    } 
} 

페이지 : 즉 다른 코드에서 않는 한

<h:panelGroup id="declareFinishListPanel"> 
    <rich:dataTable id="declareFinishItemTable" border="1" 
     value="#{rsaleController.declareFinishList}" var="item" 
     <rich:column width="16"> 
      <f:facet name="header"> 
       <rich:spacer height="24px;" /> 
      </f:facet> 
      <h:outputText value="#{rowNo+1}" /> 
     </rich:column> 

     <rich:column style="text-align:center;"> 
      <f:facet name="header"> 
       <h:outputText value="Locked" /> 
      </f:facet> 
      <h:selectBooleanCheckbox id="reset" 
       value="#{rsaleController.declaredFinishMap[item]}" /> 
     </rich:column> 

     <rich:column sortBy="#{item.dealerId}" sortIcon="none;" width="110"> 
      <f:facet name="header"> 
       <h:outputText value="#{labels.crmsFldLabDealer}" /> 
      </f:facet> 
      <h:outputText value="#{item.dealerId}" /> 
     </rich:column> 

    </rich:dataTable> 
</h:panelGroup> 

<a4j:commandLink reRender="declareFinishItemTable" 
    actionListener="#{rsaleController.saveDeclareFinishList}"> 
    <h:graphicImage value="/images/save.gif" title="Save changes" 
     style="height:16;width:16;border-style:none;vertical-align:middle" /> 
</a4j:commandLink> 

답변

1

그냥 코드 SNIPPIT보고는, declareFinishList 어디서나 초기화지고 있지 않습니다.

+0

초기화하는 메소드가 포함되지 않았지만 페이지가로드 될 때 제대로 채워집니다. 제출시 다시 공백으로 처리되는 것처럼 보이므로 아무 것도 변경하지 않으면 반영되지 않습니다. –

+0

ManagedBean의 범위는 무엇입니까? 요청,보기? –

+0

요청. 나는 실제로 콩을 재사용하고있다. 유사한 기능을 가진 다른 페이지에서 이미 사용하고 있습니다. 이 새로운 것이 효과가없는 이유를 정말로 모르십시오. –

관련 문제