ui:重复+;AJAX

ui:重复+;AJAX,ajax,jsf-2,primefaces,uirepeat,Ajax,Jsf 2,Primefaces,Uirepeat,我们有一个列表显示在屏幕的面板下,其中所有字段可重复的代码都保存在不同的Facelet文件下。当我试图为Ajax事件基于听众的动作渲染图像时,我得到了一些问题,用ID来更新图像,因为JSF正在生成一个带有中间索引的ID,因为使用 ,例如“代码>重复形式:重复:2:Reimdiige 这是主页: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xht

我们有一个列表显示在屏幕的面板下,其中所有字段可重复的代码都保存在不同的Facelet文件下。当我试图为Ajax事件基于听众的动作渲染图像时,我得到了一些问题,用ID来更新图像,因为JSF正在生成一个带有中间索引的ID,因为使用<代码> <代码>,例如“代码>重复形式:重复:2:Reimdiige 这是主页:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head>
        <title>Repeat Test Demo</title>
    </h:head>
    <h:body>
        <h:form id="repeatForm">
            <ui:repeat id ="repeat" value="#{listBean.xyzList}" var="repeatListVar">
                <p:panel id="genLiabPanelRender">
                    <ui:include src="MyScreen.xhtml" />
                </p:panel>
            </ui:repeat>
        </h:form>
    </h:body>
</html>
这将为
生成ID,看起来像:
repeatForm:repeat:2:redimage
。但是因为我们使用的是
标记,所以我们只需要指定
“redimage”
。标签负责找出真实ID的工作

我们正在侦听器中调用一个方法,并将布尔指示符的值设置为
true
false
,默认情况下为
false
。指示器用于渲染图像

但是当我们使用这个
来根据指示符值渲染图像时,我得到了错误

格式不正确的DXML:在更新过程中重复表单:重复:2:未找到重新映像


这是怎么造成的?我该如何解决这一问题?

这应该是可行的。我只看到两个可能的原因:

  • 您的bean是请求作用域,不保留
    值。修复bean构造函数的作业和/或将bean放入视图范围

  • HTML输出在语法上无效,因此会混淆负责更新HTML DOM树的JavaScript代码。您不应在包含文件中使用
    。它将在HTML输出中复制。您应该只在母版页中使用它。包含页面应如下所示:

    <ui:composition 
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets">
        <h:panelGrid columns="4" border="0" width="90%">
            ...
        </h:panelGrid>
    </ui:composition>
    
    
    ...
    
    请勿在其中复制
    和/或


  • 我在制作bean ScopeType.PAGE时遇到问题。。。是否有一种方法可以实现ui:重复使用ScopeType.SESSION?嗯,我是usinf Seam framework。正如我所读到的,ui:repeater和AJAX只在视图范围内一起工作。但是,我无法将作用域会话更改为查看。。。因此,primefaces组件ajax行为不起作用。。我将提出一个新问题。非常感谢。
    <ui:composition 
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:ui="http://java.sun.com/jsf/facelets">
        <h:panelGrid columns="4" border="0" width="90%">
            ...
        </h:panelGrid>
    </ui:composition>