2010-04-22 4 views
1

여기에 a4j : commandLink가있는 dataTable 예제가 있습니다. 클릭하면, AJAX 요청을 내 bean으로 보내고 dataTable을 reRenders한다.subTable이 a4j : commandLink의 reRender를 중단하는 이유는 무엇입니까?

<rich:dataTable id="dataTable" value="#{carManager.all}" var="item"> 
    <rich:column> 
     <f:facet name="header">name</f:facet> 
     <h:outputText value="#{item.name}" /> 
    </rich:column> 
    <rich:column> 
     <f:facet name="header">action</f:facet> 
     <a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}"> 
       <f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" /> 
       <f:param name="from" value="list" /> 
     </a4j:commandLink> 
    </rich:column> 
</rich:dataTable> 

지금까지 잘 작동 exmaple의 obove. 나는 풍부한 추가 할 때 : 테이블에 서브 테이블 (예를 들어 차고에서 차를 그룹화를) 다시 렌더링 지금 ... 부자

<rich:dataTable id="dataTable" value="#{garageManager.all}" var="garage"> 
    <f:facet name="header"> 
     <rich:columnGroup> 
      <rich:column>name</rich:column> 
      <rich:column>action</rich:column> 
     </rich:columnGroup> 
    </f:facet> 

    <rich:column colspan="2"> 
     <h:outputText value="#{garage.name}" /> 
    </rich:column> 

    <rich:subTable value="#{garage.cars}" var="car"> 
     <rich:column><h:ouputText value="#{car.name}" /></rich:column> 
     <rich:column> 
      <a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}"> 
        <f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" /> 
        <f:param name="from" value="list" /> 
      </a4j:commandLink> 
     </rich:column> 
    </rich:column> 
</rich:dataTable> 

실패 : 데이터 테이블은 다시 렌더링되지 않지만 항목이 있기 때문에 삭제됩니다 항목이 수동 페이지 새로 고침 후 표시되지 않습니다.

subTable에서 reRendering을 지원하지 않는 이유는 무엇입니까?

탱크 톰

+0

은 (는) 버그 일 수 있습니다. 파이어 폭스의 자바 스크립트 콘솔 확인 – Bozho

+0

체크. 응답은 두 경우 (w/o subTable 제외)의 테이블이지만 subTable을 사용하면 이전 테이블을 다시 보내는 것처럼 보입니다. 어떤 종류의 캐싱 문제 일 수 있습니다. 어쨌든 Firefox에서는 캐싱이 비활성화되어 있습니다. – Tom

답변

1

그것은 Hibernate가 관련 모델의 목록을 업데이트하지 않은 것으로 밝혀졌다.

AppFuse의 carManager를 사용하여 Car를 제거한 후에도 삭제 된 자동차는 GarageManager.getAll()을 사용하여 Garage를 수신하면 관련 Garage의 getCars() - 목록에 계속 나타났습니다.

따라서 은 부자연 스와 관련된이 아닙니다.

현재이 문제를 해결하기 위해 새로운 문제를 열어 볼 수있는 임시 해결책을 사용하고 있습니다.