f:ajax的奇怪行为:如果<ui:repeat>有一个带有escape =“false”的<h:outputtext>,则视图之间的切换不会更新浏览器中呈现的代码

时间:2016-01-08 19:24:29

标签: ajax jsf

我想在两个视图之间切换,并在每个视图上报告两个列表输出。

  1. 视图之间的切换使用&lt; h:commandLink &gt;使用&lt; f:ajax &gt;元件。
  2. 每个视图使用&lt; ui:repeat &gt;
  3. 生成列表的输出
  4. 如果&lt; h:outputText &gt;输出正常。在&lt; ui:repeat &gt;内没有指定转义属性。
  5. escape =“true”添加到&lt; h:outputText &gt;发生以下情况:

    1. 点击&lt; commandLink &gt; &lt; commandLink &gt;浏览器不会更新渲染的输出。
    2. 点击myController.toggleView后更改listData.showFirst(boolean)
    3. 点击&lt; commandLink &gt;网站的源代码会更改为应该存在的内容。
    4. 摘要:点击&lt; commandLink &gt;更新输出的源代码,但当&lt; h:outputText &gt;时,浏览器不会更新输出。在&lt; ui:repeat &gt;中使用属性escape =“true”。

      这里的代码:

      <h:form prependId="false">
        <h:commandLink actionListener="#{ myController.toggleView }" value="Click">
          <f:ajax render="@form" />
        </h:commandLink>
      
        <h:panelGroup rendered="#{ listData.showFirst }" id="firstView">
          <ui:repeat var="house" value="#{ listData.houses }">
            <h:outputText value="#{ house.description }" escape="false" />
          </ui:repeat>
        </h:panelGroup>
      
        <h:panelGroup rendered="#{ !listData.showFirst }" id="secondView">
          <ui:repeat var="street" value="#{ listData.streets }">
            <h:outputText value="#{ street.description }" escape="false" />
          </ui:repeat>
        </h:panelGroup>
      </h:form>
      

      有什么想法吗?

0 个答案:

没有答案