我正在使用primefaces布局组件,并且有一个center和right layout。我想在中心布局中有一个链接/按钮来扩展正确的layoutUnit,因为我在第一次加载页面时将正确的布局默认为折叠状态。我在右侧layoutUnit上使用布尔表达式,并从链接更新它。一切正常,除了正确的layoutUnit没有从我的链接更新ajaxed。如果我刷新页面,则展开正确的layoutUnit。
页:
<h:form prependId="false">
<p:layout fullPage="true">
<p:layoutUnit id="right" position="right" width="350" header="Marker Details" resizable="true" closable="true" collapsible="true" collapsed="#{mapBean.rightCollapsed}">
<h:outputText value="#{mapBean.text}" />
</p:layoutUnit>
<p:layoutUnit position="center">
<p:commandLink actionListener="#{mapBean.showDetail}" update="right" value="Expand Right Layout"/>
</p:layoutUnit>
</p:layout>
</h:form>
豆:
public class MapBean implements Serializable {
private boolean rightCollapsed=true;
public void showDetail(ActionEvent e){
rightCollapsed=false;
}
//getter/setter for rightCollapsed
答案 0 :(得分:1)
问题可能是您没有更新布局。您可以将 h:form 设为 ID ,并使用此ID替换命令按钮的更新 ID名称,如下所示:
<h:form id="layoutForm" prependId="false">
<p:layout fullPage="true">
<p:layoutUnit id="right" position="right" width="350" header="Marker Details" resizable="true" closable="true" collapsible="true" collapsed="#{mapBean.rightCollapsed}">
<h:outputText value="#{mapBean.text}" />
</p:layoutUnit>
<p:layoutUnit position="center">
<p:commandLink actionListener="#{mapBean.showDetail}" update="layoutForm" value="Expand Right Layout"/>
</p:layoutUnit>
</p:layout>
</form>
答案 1 :(得分:1)
请参阅以下论坛帖子,了解如何将<p:layout>
组件与fullPage=true
属性结合使用。
http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=4766
您不能以这样的形式包装布局组件,每个<p:layoutUnit>
都需要自己的嵌套表单。通过设置表单ID并正确引用组件ID,您仍然可以update
其他表单的组件,如另一个答案所示。尝试这样的事情:
<p:layout fullPage="true">
<p:layoutUnit id="right" position="right" width="350" header="Marker Details" resizable="true" closable="true" collapsible="true" collapsed="#{mapBean.rightCollapsed}">
<h:form id="rightForm" prependId="false">
<h:outputText id="mapBeanTextOutputText" value="#{mapBean.text}" />
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:form id="centerForm" prependId="false">
<p:commandLink actionListener="#{mapBean.showDetail}" update="mapBeanTextOutputText" value="Expand Right Layout"/>
</h:form>
</p:layoutUnit>
</p:layout>