jsf ajax 部分渲染

Posted

技术标签:

【中文标题】jsf ajax 部分渲染【英文标题】:jsf ajax partial rendering 【发布时间】:2012-01-17 22:24:40 【问题描述】:

我正在使用 JSF 2.0.4 表单下有一个组件,其中有一个 f:ajax

<h:form id="formid"....>
......
<h:outputText id="textid" ........../>
.........
<h:commandLink id=".." value="...">
   <f:ajax event="click" render="formid" execute="input" listener="#bean.action"/>
<h:commandLink/>
<h:form/>

render 属性是否有任何表达式将 textid 从 formid 中排除,以便在触发 ajax 后呈现表单而不是 outputText?

【问题讨论】:

您希望“渲染”作为属性。它需要一个布尔值 true/false,你可以绑定它。 为 outputText 渲染?我不希望仅在触发 ajax 后才呈现 outputText。 您的问题有点不清楚 - 您的意思是“渲染”为“显示”或“重新渲染”为更新新内容?请提供更多详细信息。 【参考方案1】:

我不知道有一种方法可以指定“表单中除此之外的所有内容”,但不要使用表单 id 作为渲染关键字,您可以只列出要渲染的表单下的子 ID,而不是包括 outputText 的 id,例如

<f:ajax event="click" render="id1 id2 id3" execute="input" listener="#bean.action"/>

我不确定你为什么想要这个 - 如果你不想在 ajax 事件触发时更新输出文本,我想你所要做的就是不在监听器中更新它?

【讨论】:

谢谢你这个作品,但它给了我一个 id 的例外,它无法找到一个 id。我会更新以获取更多信息

我想包含 id1 但在 DOM 中找不到这个 id 元素与您要呈现的表单是否在同一表单中?如果没有,您必须指定父容器/表单的 ID。我发现 this 是关于渲染和 id 的一个很好的指南。 是的 格式相同

以上是关于jsf ajax 部分渲染的主要内容,如果未能解决你的问题,请参考以下文章

在每个 ajax 请求上重建 JSF 视图

带有 ui:define 的 JSF2.0 部分渲染

为啥 JSF 2.2 需要更多时间在 Wildfly 上部分呈现 ajax 请求

PrimeFaces 4.0/JSF 2.2.x 中的文件上传不适用于 AJAX - javax.servlet.ServletException:请求内容类型不是多部分/表单数据

JSF 2.0 复合组件 - ajax 渲染参数 OUTSIDE 组件定义

JSF Ajax 渲染使用 Jquery Mobile 丢失 CSS