2010-03-10 4 views
1

a4j : outputPanel 내부에 정의 된 rich dataTable이 있는데, 이는 HtmlDataTable을 만드는 세션 범위의 백업 빈에 바인딩됩니다. 그 자체로, 내 코드의 일부가 잘 작동하고 있고, 데이터 테이블이 좋아 보인다.동적 richfaces dataTable, ajax4jsf 및 reRendering

페이지의 다른 부분에는 a4j : commandLinks로 만드는 몇 가지 기본 텍스트 링크가 있으며 클릭하면 해당 데이터 테이블을 새로운 행 및 열 데이터로 다시 렌더링해야합니다. 행 데이터가 잘 업데이트되지만 열 데이터 (헤더 텍스트, 너비 등)가 아닙니다.

코드를 파고 들자 마자 HtmlDataTable에 대한 backing bean에 대한 호출이 해당 테이블의 reRendering 중에 만들어지지 않은 것처럼 보이지만 전체 페이지가 다시로드되면 reRendered됩니다. 그래서 그것은 단지 여기 ajax4jsf/reRendering 부분이 나를 물어 뜯는 것 같습니다.

reRender 프로세스가 dataTable 구조를 무효화하여 강제로 다시 해당 빈을 호출 할 수있는 방법이 있습니까?

의미가 있다면 저는 Seam도 사용하고 있습니다. 그래서 그것을 사용하여 찾을 수있는 해결책이 있다면, 도움이 될 것입니다.

감사합니다.

답변

1

후 처리를 위해 해결책을 찾았습니다. a4j 요청이 내 작업 수신기 빈에 만들어 질 때마다 dataTable 빌드 빈에 테이블 플러시를 지시해야합니다. 그런 다음 해당 bean은 간단한 myDataTable.getParent(). getChildren(). remove (myDataTable)을 수행합니다. 이 페이지는 그것을 도왔습니다 : http://www.coderanch.com/t/213312/JSF/java/dynamic-datatable-binding.

0

귀하의 조치로 세션 범위 콩을 컨텍스트에서 제거하십시오. 예를 들어

:

<a:commandLink action="#{someBean.perform}" value="Submit" reRender="myTable"/> 

과 조치 : 바로 검색() 또는 어떤 방법로드를 호출로

다음은 아마 쉽게
@Name("someBean") 
public class SomeBean { 

    public void perform() { 
    //do stuff 

    Contexts.removeFromAllContexts("myBean"); 
    } 
} 

Othewrwise 당신의 데이터 테이블은 목록으로 채워집니다 경우 자료.

+0

제안 해 주셔서 감사합니다.하지만 Damo는 변경된 후에도 계속 문제를보고 있습니다. 귀하의 예제는 올바른 설치 일반 설정입니다 : 내 "someBean"클래스는 commandLink 클릭을 처리하고 "myBean"클래스는 테이블에 대한 참조를 보유합니다. 모든 컨텍스트에서 "myBean"을 제거하면 열이 백업 빈에서 변경 되었더라도 원래의 dataTable 구조가 표시됩니다. –