2009-07-03 5 views
0

CrD 기능을 사용하여 JSF에서 간단한 애플리케이션을 빌드하고 있습니다. tomahawk 구성 요소를 사용하여 편집 기능을 구현하려고합니다. 행을 내 백업 bean에서 검색 할 수 없습니다.backing bean에서 HTML DataTable에 액세스하는 동안 예외가 발생했습니다.

가 가
 public void editCar(ActionEvent event) { 
    System.out.println("Row number ## " + _selectedRowIndex.toString() + " selected!"); 
    System.out.println("Datatable ::"+ dataTable);    
    System.out.println("Row Count ::" + dataTable.getRowCount()); 
    dataItem = (SimpleCar) getDataTable().getRowData(); 

    //selectedCar = (SimpleCar) _list.get(Integer.parseInt(_selectedRowIndex.toString())); 
    selectedCar = (SimpleCar) dataTable.getRowData(); 

    System.out.println(dataTable.getRowData()); 
} 
이 SimpleCar.java 내 DTO {데이터 전송 개체}가

을 포함 :

 <t:dataTable id="data" 
      binding="#{selectOneRowList.dataTable}" 
      styleClass="scrollerTable" 
      headerClass="standardTable_Header" 
      footerClass="standardTable_Header" 
      rowClasses="standardTable_Row1,standardTable_Row2" 
      columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column" 
      var="car" 
      value="#{selectOneRowList.list}" 
      sortColumn="#{selectOneRowList.sortColumn}" 
      sortAscending="#{selectOneRowList.sortAscending}" 
      preserveDataModel="false" 
      preserveSort="true" 
      preserveRowStates="true" 
      rows="10" 
     > 
     <h:column> 
      <f:facet name="header"> 
       <h:outputText value="Select"/> 
      </f:facet> 
      <t:selectOneRow groupName="selection" id="hugo" value="#{selectOneRowList.selectedRowIndex}" 
        onchange="submit();" immediate="true" 
        valueChangeListener="#{selectOneRowList.processRowSelection}"/> 
     </h:column> 

     <h:column> 
      <f:facet name="header"> 
      </f:facet> 
      <h:outputText value="#{car.id}" /> 
     </h:column> 

     <h:column> 
      <f:facet name="header"> 
       <h:outputText value="Cars" /> 
      </f:facet> 
      <h:outputText value="#{car.type}" /> 
     </h:column> 

     <t:column sortable="true"> 
      <f:facet name="header"> 
       <h:outputText value="Color" /> 
      </f:facet> 
      <h:outputText value="#{car.color}" /> 
     </t:column> 

    </t:dataTable> 

가 여기 내 백업 콩 SelectOneRowList.java입니다 :

여기 내 JSP 파일 싹둑입니다 변수 ID, 유형, 색상 및 해당 setter/getter.

dataItem 변수의 형식은 "SimpleCar"입니다. dataTable은 HTMLDataTable 유형입니다. 첫 3 SOP는 얻을 수 있지만 4 SOP는 인쇄되지 않습니다. 내가 서버에 다음과 같은 예외가 나타납니다

javax.faces.el.EvaluationException : 예외 동안 호출 식 # {selectOneRowList.editCar} org.apache.myfaces.el.MethodBindingImpl.invoke (MethodBindingImpl.java : 156) javax.faces.component.UICommand.broadcast (UICommand.java:89) : 171) org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute (InvokeApplicationExecutor.java:32) org.apache.myfaces.lifecycle.LifecycleImpl.executePhase (LifecycleImpl.java:95) org.apache.myfaces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:70) javax.faces.webapp.FacesServlet.service (FacesServlet.java:139) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter (ExtensionsFilter.java:341)

편집 버튼을 클릭하면 내 Backing bean의 editCar 메소드가 호출됩니다. 내 백킹 빈에서 선택된 행의 데이터를 가져와야합니다. 예외가 발생하는 이유는 무엇입니까?

위의 예는 웹 사이트에 배포 된 tomawhawk 예제 WAR에서 발췌 한 것입니다. 나는 BalusC에 그들을 포함하여 많은 연결을 통해 갔다 그러나 그들 중 아무도는 도왔다.

감사합니다, 당신은 데이터 테이블에서 editCar()에 연결된 버튼을 넣어야 할 것 DataTable.getRowData()

답변

0

사용합니다. 따라서 JSP에서 다음과 같이 다른 열을 추가해야합니다.

... 
    <t:column sortable="true"> 
     <f:facet name="header"> 
      <h:outputText value="Color" /> 
     </f:facet> 
     <h:outputText value="#{car.color}" /> 
    </t:column> 

    <t:column sortable="false"> 
     <h:commandButton value="Edit" action="#{selectOneRowList.editCar}" /> 
    </t:column> 


</t:dataTable> 
관련 문제