0

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

当用户单击某个button或时,会显示此弹出窗口link,直到它被隐藏。

我想要另一个 JSF 页面,通过 AJAX 调用为这个 div 提供内容。我隐约记得使用 Struts Action 和 JSP 片段执行此操作。

在 JSF 2.0 中可以做到这一点吗?

额外细节:

我的情况如下:

  1. 我有一个页面将员工的详细信息显示为汇总表,使用dataTable带有类的标签EmployeeInfo作为提供 a Collectionof EmployeeBeans 的支持 bean。在此页面上,我有一个radio按钮作为dataTable. 此页面有一个div隐藏的。
  2. radio按钮打开并单击某个按钮时,通过AJAX调用,我们需要点击支持 bean 以获取EmployeeBean如上所述已选择的详细信息并div基于此AJAX调用填充。

我不想在第一页完整提交并获得第二页的原因是,因为我想保存在第一页上所做的任何更改的状态。

4

1 回答 1

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:include 包含的另一个 JSF 页面中。重要的一点是 f:ajax take 是进行 AJAX 调用(在本例中为单击事件)并更新指定元素(隐藏区域)的原因。

于 2012-05-04T11:30:38.580 回答