在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按钮,但我不认为它像我想的那样严格。如果我错了,请纠正我。
答案 0 :(得分:3)
当ajax请求在webbrowser中成功完成时,<f:ajax render="go">
将使用相对客户端ID go
更新生成的JSF组件的HTML表示。基本上,具有相对客户端ID go
的JSF组件将位于Web服务器中的JSF组件树中,然后执行,之后其生成的HTML输出将最终出现在ajax响应中。一旦ajax响应在webbrowser中返回,这个HTML输出就会在webbrowser的HTML DOM树中更新。如果JSF组件可以基于提交的表单数据基于每个请求生成不同的HTML内容,那么这非常有用。
请注意,这仅在JSF组件始终呈现时才有效(即它本身或其父项没有rendered="false"
。
在您的特定示例中,生成的HTML表示中基本上没有任何内容可以基于每个请求进行更改。因此<f:ajax render="go">
在这个特定情况下似乎完全没用。例如,如果您有第二个下拉列表,其可用项目列表取决于当前下拉列表中的所选项目,那么在<f:ajax render>
中引用它是有意义的,以便在您更改时更新新项目目前的下拉列表。
答案 1 :(得分:0)
这里它什么也没做,但是如果你想在某些渲染条件下显示commandButton那么它将被使用...