Jsf 如何使用基本面刷新页面的引用部分';p:commandLink?
环境:Tomcat6、JSF2.0、prime faces 2.2.1、chrome浏览器 我想单击左侧展开树中的“ViewDetail”链接,并显示产品的详细信息。但是下面的代码不起作用。 然后我将属性ajax=“false”添加到链接中,这似乎是可行的。但是页面左侧的“p:treeTable”是 还刷新和崩溃。那么我该怎么做呢:单击左侧展开树节点上的链接,在右侧部分显示信息 ,并保持左侧展开的树节点仍处于展开状态Jsf 如何使用基本面刷新页面的引用部分';p:commandLink?,jsf,layout,primefaces,commandlink,Jsf,Layout,Primefaces,Commandlink,环境:Tomcat6、JSF2.0、prime faces 2.2.1、chrome浏览器 我想单击左侧展开树中的“ViewDetail”链接,并显示产品的详细信息。但是下面的代码不起作用。 然后我将属性ajax=“false”添加到链接中,这似乎是可行的。但是页面左侧的“p:treeTable”是 还刷新和崩溃。那么我该怎么做呢:单击左侧展开树节点上的链接,在右侧部分显示信息 ,并保持左侧展开的树节点仍处于展开状态 <h:form id="BizTypeTreeTableForm" &g
<h:form id="BizTypeTreeTableForm" >
<p:layout fullPage="true">
<p:layoutUnit id="left" position="left" scrollable="true" width="350" resizable="true" closable="false" collapsible="true" minWidth="250" >
<p:treeTable id="BizTypeTreeTable" value="# {treeTableController.root}" var="treeTable">
<p:column>
<f:facet name="header">ProductName</f:facet>
<h:outputText value="#{treeTable.TYPENAME.value }" />
</p:column>
<p:column style="width:5%">
<f:facet name="header">Action</f:facet>
<p:commandLink value="ViewDetail" update="content" action="#{treeTableController.showDetail}">
</p:commandLink>
</p:column>
</p:treeTable>
</p:layoutUnit>
<p:layoutUnit id="center" rendered="true" position="center" style="text-align:left;" scrollable="true" >
<h:outputText value="Please click the left tree node" rendered="# {allTabManager.productObject.TypeNo.value eq null}"/>
<div id="content" class="ui-widget">
<div class="post">
<ui:insert name="content_tab" >...</ui:insert>
</div>
</div>
</p:layoutUnit>
</p:layout>
</h:form>
产品名称
行动
...
我认为您对id的引用不正确,因为div
和p:layout
不是同一级别
但是您可以尝试使用update=“:content”
获取绝对id,或者更新整个p:layoutUnit
:
<p:commandLink value="ViewDetail"
update="center"
action="#{treeTableController.showDetail}">
更新必须指向树中真正的JSF组件,而不是普通的HTML元素 替换
<div id="content" class="ui-widget">
借
带有
layout=“block”
的panelgroup将呈现
而不是
thx。对于您的回复,我尝试了update=“:content”,甚至附加了表单id,但它不起作用。您是否尝试像我回答的代码示例中那样更新布局单元?我不知道是否可以用jsf ajax调用更新非jsf元素(div)。是的,我已经这样做了,但它也不起作用。我在控制台上看到了日志。它显示了点击操作触发了jsf的整个生命周期。这个问题还有其他原因吗?p:layoutUnit
是如何在html中呈现的?背景是,您只能更新呈现的html页面中实际存在的组件。有时用p:panelGroup
包装有问题的组件会有所帮助(你可以尝试包装你的p:layoutUnit
。这将在html中呈现为span
,即使没有呈现panelGroup的内容,它也在那里。另一个想法是:查看html源代码中的id,并将它们与facelet中使用的id进行比较。我已经完成了你上面所说的工作,id就是正确的id。)我想更新。真奇怪!在替换了上面的代码之后,这个页面的正确内容部分仍然没有刷新。我已经检查了我的html源代码,h:panelGroup
确实呈现了一个div和一个名为content
p:commandLink
的id呈现了一个onclick事件和一个ajax小部件,并更新了ccontent
div。我也将div替换为
,但再次失败。生成的panelgroup的id
是什么?在它前面加上:
前缀,并在commandlink的update
属性中完全设置。好!命令链接的html源代码:
html源代码:..
好,the更新应该是update=“:BizTypeTreeTableForm:content”
。不要更改组件ID!
<h:panelGroup layout="block" id="content" class="ui-widget">