2012-07-30 3 views
0

사용자가 선택 레코드를 삭제할 수 있도록 여러 행을 선택하고 있습니다. 이 줄은, 다중 선택 기능을 프런트 엔드에 시각적으로 잘 작동 -PrimeFaces DataTable : 널 (null)만을 제공하는 동적으로 빌드 된 테이블에 대해 (복수) 선택이 작동하지 않습니다.

final DataTable = new DataTable(); 
... 
// (1) 
dataTable.setSelectionMode("multiple"); 
// (2) 
dataTable.setValueExpression("selection", createValueExpression(DbeBean.class, "selection", Object[].class)); 
// (3) 
dataTable.setValueExpression("rowKey", createValueExpression("#{" + VARIABLE + ".indexKey}", Object.class)); 
... 
final ClientBehaviorHolder dataTableAsHolder = dataTable; 
... 
// (4) 
dataTableAsHolder.addClientBehavior("rowSelect", createAjaxBehavior(createMethodExpression(metaData.controllerBeanType, "onRowSelect", void.class, new Class<?>[] {SelectEvent.class}))); 
  1. 여러 다음 PDF 문서 및 쇼케이스 연구소에 따르면, 그와 같은 자바로 변환 코드를 사용해야합니다.
  2. 선택 - # {dbeBean.selection}이 실제로 바인딩되고 public void setSelection(T[] selection) 만 호출됩니다.
  3. rowKey - 호출 중이며 올바르게 작동하면 getIndexKey()이 호출되고 필요한 결과를 반환합니다.
  4. rowSelect -이 이벤트 핸들러도 호출됩니다 (DbeBean.onRowSelect(SelectEvent e)).
나는 또한 게으른 데이터 모델 (내가 정말 이유가있을 수 있지만 방법으로?; 누가 알 믿지 않는 setSelection()가 T[] 필요하지만, 그것은 List<T>을 반환을? - 그것은 그런 이유)를 사용

:

public abstract class AbstractLazyDataSource<T extends IIndexable<K>, K> extends LazyDataModel<T> { 
... 
@Override 
public final List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) { 
    ... 
    final IResultContainer<T> resultContainer = getData(querySpecifier); 
    final List<T> data = resultContainer.getData(); 
    setRowCount(resultContainer.getTotalEntitiesCount()); 
    return getPage(data, first, pageSize); 
} 
... 
@Override 
public final K getRowKey(T object) { 
    return object.getIndexKey(); // T instanceof IIndexable<K>, have to return a unique ID 
} 
... 

그러나 핸들러는 예상대로 작동하지 않습니다. 이유 (2) DbeBean.setSelection(T[] selection) & (4) DbeBean.onRowSelect(SelectEvent e)null 값 : T[] selection = nullSelectEvent: e.getObject = null 각각 얻으십시오. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

미리 감사드립니다.

  • PrimeFaces 3.2
  • 인 Mojarra 2.1.7

답변

0

나는 일이있어 : 단순히 (DataTable을) 동적 p:dataTable 창조하는 동안 rowKey 속성을 제거하고 단순히에 getRowData 오버로드 게으른 데이터 모델. 이제 작동합니다.

관련 문제