2012-06-17 68 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> 

我要更新这棵树后,我补上一或删除东西..但每当我更新这仍然是其嵌套更新还叫我的意思说这也叫更新这些组件“:centerPanel:tableForm:tabForm” ......

这给我的错误:tableForm鉴于没有发现,因为这形成负载在我中心面板,这棵树是我的右侧面板..所以当我在做一些树的操作是不是总是:tableForm是我的中央面板..(我是指设计是这样的只)

所以现在我的问题是,我可以把一些条件或者有什么办法让我可以指定同时更新嵌套组件以及何时不....在坚果壳有什么办法只更新:resoucesTree是这样一种方式,嵌套更新不叫,这样我可以避免错误...

在此先感谢。

回答

1

您可以在update属性中使用EL。

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

其中虚拟#{hasTableForm}返回一个布尔值。

但是,如果:tableForm已在:centerPanel之内,那么您可以省略它。

update=":centerPanel :tabForm"