0

在 JSF 代码中,我看到:

...

<h:selectOneMenu id="clientCode" value="#{theBean.clientCodeSelection}">
  <f:selectItem itemValue="" itemLabel="Please select one" />
  <f:selectItems value="#{theBean.clientList}" />
  <f:ajax render="go"/>
</h:selectOneMenu>

...

<h:commandButton id="go" value="Go" immediate="true" >
  <f:ajax render="clientTable" event="click" listener="#{theBean.doSearch}"></f:ajax>
</h:commandButton>

我可以知道<f:ajax render="go"/>实际上做什么吗?我最初的假设是渲染Go button,但我认为它不像我想的那么严格。如果我错了,请纠正我。

4

2 回答 2

3

当ajax 请求在 webbrowser 中成功完成时,将<f:ajax render="go">使用相对客户端 ID 更新生成的 JSF 组件的 HTML 表示。go基本上,具有相对客户端 IDgo的 JSF 组件将位于 Web 服务器的 JSF 组件树中,然后执行,然后其生成的 HTML 输出将在 ajax 响应中结束。一旦 ajax 响应在 webbrowser 中返回,该 HTML 输出将在 webbrowser 的 HTML DOM 树中更新。如果 JSF 组件可以根据提交的表单数据在每个请求的基础上生成不同的 HTML 内容,这将非常有用。

请注意,这只适用于始终rendered="false"呈现 JSF 组件的情况(即它本身或其父组件没有 a on )。

在您的特定示例中,生成的 HTML 表示中基本上没有任何内容可以根据每个请求进行更改。因此,<f:ajax render="go">在这种特定情况下,这似乎完全没用。例如,如果您有第二个下拉列表,其可用项目列表取决于当前下拉列表的选定项目,那么在 中引用它是有意义的<f:ajax render>,以便在您更改当前下拉列表时使用新项目更新它。

于 2012-09-13T11:08:07.033 回答
0

在这里它什么也不做,但如果您想在某些渲染条件下显示 commandButton,那么它将被使用...

于 2012-09-13T05:23:18.357 回答