2015-02-04 3 views
0

PrimeFaces에 약간의 문제가 있습니다. colReorder 이벤트에 이벤트 수신기를 추가하려고하는데이 작업을 추가하면 과 함께 실패합니다. 예기치 않은 토큰.PrimeFaces Datatable - 열 재주문이 실패합니다.

<p:dataTable 
    width="100%" 
    value="#{myBean.getItems()}" 
    var="item" 
    id="resultList" 
    draggableColumns="true" 
> 
<p:ajax event="colReorder" listener="#{myController.onColumnReorder}" /> 

...

그리고 백업 빈 :

는 코드는 다음과 같습니다 아약스 모든 것이 잘 작동 :

@Named 
@RequestScoped 
public class MyController implements Serializable{ 

    public void onColumReorder(ReorderEvent event) { 
     FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Row Moved", "From: " + event.getFromIndex() + ", To:" + event.getToIndex()); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 
} 

이상한 내가 페이지를 제거하는 경우이다 난 기둥을 바꿀 수있어.

어떤 아이디어, 알려진 버그입니까, 아니면 뭔가 빠졌습니까? 혼란 getItems을 방지하기 위해

는 sessionscoped 콩에 다음과 같습니다

@Named 
@SessionScoped 
    public class MyBean extends DataModel<E> implements Serializable { 
    private List<E> items; 

    ... 

    public List<E> getItems() { 
    return items; 
} 
+0

값'에 의해 암시 된대로 해당 빈의 getter 메소드를 통해 상품 (관련 데이터 저장소에서 행)의 목록을 얻는 경우 = "# {myBean.getItems()}"'그런 다음, 그 일을 그만하고'@ PostConstruct'로 주석이 달린 메소드와 같은 장소에서 같은 일을하십시오. – Tiny

+0

이 게터는 간단한 게터가 아니기 때문에 실제로 수정할 수 없습니다. –

+0

게터는 설계 상 단순해야합니다. 수정할 수 없다면 다른 것을 추가하고이를 사용하십시오. 게으른 방식으로 다른 게터를 호출합니다. – Kukeltje

답변

0

사실 org.primefaces.event.ReorderEvent는하지만 행 재정렬에 대한 열 재정렬에 허용되지 않는 것 같다. 당신이 좋아하는 당신의 방법의 매개 변수로 AjaxBehaviorEvent을 사용해야합니다

public void onColumReorder(AjaxBehaviorEvent event) { 

}