在jsf中部分加载视图

时间:2012-10-04 08:28:30

标签: ajax jsf-2 primefaces

我想在 ajax 事件中懒惰地呈现ui:composition,一个xhtml文件。

新的ui:composition需要在面板或div中呈现。

在rails中我这样做

render :partial => "file", :layout => :none

修改

还有一种方法可以将locals传递给rails中的局部视图

    render :partial => "file", :layout => :none, :locals => {:some_object => @some_object}

如何将对象发送到此以呈现视图

我在xhtml中使用以下代码:

<p:commandButton id="selectButton" value="Add" title="Add User" type="submit"
                                 action="#{userBean.add}">
  <f:ajax render=":userLanding:addPanel"/>                     
</p:commandButton>

我的ManagedBean里面有

public String add()
{
   return "user"; // i need to open user.xhtml page.
}

<div id="addPanel">或更好<p:panelGroup layout="block" id="addPanel">

userBean#add()负责渲染abc.xhtml,需要在我的ui容器中渲染。

目前它重定向到页面(abc.xhtml)而不是在目标面板/ div内呈现。

这种视图加载的JSF方式是什么?

编辑2:

我也尝试过:

<h:panelGroup>
    <ui:include src = "user.jsf"
</h:panelGroup>

但条件是:ui include应仅在按钮点击事件上,src文件将显示在面板内(无导航)。

1 个答案:

答案 0 :(得分:0)

PrimeFaces <f:ajax>组件不支持<p:xxx>。您应该使用<p:ajax>,或者在此特定情况下,只使用PrimeFaces UICommand组件自己的update属性。

<p:commandButton ... update=":userLanding:addPanel" />

您只需确保操作方法返回nullvoid,否则仍会进行导航。