在关于ajax调用的JSF中,我们如何使用不同的JSF页面创建HTML片段进行渲染?

时间:2012-05-04 11:19:07

标签: ajax jsf

我有一个JSF页面,其中有div作为弹出窗口。

当用户点击某个buttonlink时,系统会显示此弹出式窗口,直到隐藏它为止。

我想有另一个JSF页面通过AJAX调用为这个div提供内容。 我依稀记得使用Struts Action和JSP片段来做这件事。

是否可以在JSF 2.0中执行此操作?

其他详细信息:

我的方案如下:

  1. 我有一个页面,使用dataTable标记以及EmployeeInfo类作为支持bean,将Collection EmployeeBean显示为员工的详细信息。 }秒。在此页面上,我有radio按钮作为dataTable中的第一列。此页面隐藏了div
  2. radio按钮打开并单击某个按钮时,通过AJAX调用我们需要点击支持bean以获取已经EmployeeBean的详细信息如上所选,并根据此div来电填充AJAX
  3. 我不希望在第一页上获得完整提交并获取第二页的原因是,因为我想保存在第一页上所做的任何更改的状态。

1 个答案:

答案 0 :(得分:1)

使用标签,您可以非常轻松地显示或隐藏内容。这是快速输入的粗略代码,但是在你的bean中,想象你有以下内容:

public class MyBean {
  public boolean renderHidden = false;

  public void toggleHidden(AjaxBehaviorEvent event) {
    renderHidden = !renderHidden;
  }
}

然后在你的JSF页面中,你有一个链接显示隐藏你的弹出窗口作为一个ui:fragment:

<h:commandLink value="Click Me!">
  <f:ajax event="click" listener="#{myBean.toggleHidden}" render="hiddenarea" />
</h:commandLink>

<ui:fragment id="hiddenarea" rendered="#{myBean.renderHidden}">
  <div><!-- Content to show/hide here --></div>
</ui:fragment>

ui:fragment可以很容易地存在于你通过ui包含的另一个JSF页面中:include如果你需要它。重要的一点是f:ajax take是调用AJAX的函数(在这种情况下是一个click事件)并更新指定的元素(hiddenarea)。