2012-06-17 7 views
1

나는 옳은 길을 가고 있는지 또는이 질문을 아직받지 못했는지 알 수 없습니다.JSF : 중첩 된 업데이트 호출을 피하십시오.

나는 내 JSF 프로젝트 나는이 트리 구조가 .. 뭔가를 추가하거나 뭔가를 삭제 한 후 나는이 나무를 업데이트해야

<p:tree id="resourcesTree" value="#{someBean.root}" var="node" selectionMode="single" styleClass="no-border" 
    selection="#{someBean.selectedNode}" dynamic="true"> 
    <p:ajax listener="#{someBean.onNodeSelect}" update=":centerPanel :tableForm :tabForm" event="select" onstart="statusDialog.show();" 
     oncomplete="statusDialog.hide();" /> 
    <p:treeNode id="resourcesTreeNode" > 
     <h:outputText value="#{node}" id="lblNode" /> 
    </p:treeNode> 
</p:tree> 

을하지만이 여전히 중첩 업데이 트를 업데이트 할 때마다 또한 I가 의미하는 전화 "centerPanel : tableForm : tabForm"...

이렇게 나에게 오류가 발생합니다 : tableForm이 중앙 패널에로드되고이 트리가 내 오른쪽 패널에 있기 때문에보기에 테이블을 찾을 수 없습니다. .. 그래서 나무에서 어떤 작업을 할 때 항상 그런 것은 아닙니다 : tableForm은 중앙 패널에 있습니다. (나는 디자인이 only)

그래서 지금 내 질문은 내가 몇 가지 조건을 넣을 수 있습니다 또는 중첩 된 구성 요소를 업데이트 할시기를 지정할 수 있도록 어떤 식 으로든 있습니다 .... 때로는 너트 셸에서 업데이트하는 방법이 있습니다 : resoucesTree는 오류를 피할 수 있도록 중첩 된 업데이트가 호출되지 않는 방법입니다. ...

미리 감사드립니다.

답변

1

update 속성에서 EL을 사용할 수 있습니다. 허구 #{hasTableForm}이 부울을 반환

update=":centerPanel :tabForm #{hasTableForm ? ':tableForm' : ''}" 

.

:tableForm이 이미 :centerPanel 안에 있으면 생략해도됩니다.

update=":centerPanel :tabForm" 
관련 문제