当前位置: 首页 > 面试题库 >

Primefaces-ui:repeat组件不会更新

廉展鹏
2023-03-14
问题内容

我有一个问题要Ajax更新ui:repeat。更新是从ui:repeat外部的commandButton触发的(请参见下面的代码)。需要可变的
priceHour 来计算其他价格(周,Monat ..)

<h:form id="myForm">
<ui:repeat id="alvs" var="alv" value="#{myBean.allV}" >  
    <h:panelGroup rendered="#{alv.status == 'ON'}" > 
    <div class="pricing">

        <h:outputText styleClass="bold" value="#{alv.shortName}: "/>

        <p:inputText value="#{alv.priceHour}" id="hour" required="true" >                 
        <f:convertNumber pattern="#.##" type="currency" />  
        </p:inputText>

        <p:inputText value="#{alv.priceDay}" id="day" >                
        <f:convertNumber pattern="#.##" type="currency" />
        </p:inputText>

        <p:inputText value="#{alv.priceWeek}" id="week" >                 
        <f:convertNumber pattern="#.##" type="currency" /> 
        </p:inputText>

        <p:inputText value="#{alv.priceMonth}" id="month" >                   
        <f:convertNumber pattern="#.##" type="currency" /> 
        </p:inputText>

    </div>
    </h:panelGroup>

    <p:messages />

    </ui:repeat>

<p:commandButton value="Calculator" actionListener="#{myBean.priceCalc}" process="@this,alvs:hour" update="alvs" />

</h:form >

当我单击按钮时,什么也没有发生,并且ui:repeat和价格未更新。怎么了?
我也尝试过 更新“ myForm:alvs”更新“:myForm:alvs” :什么都没有!
我正在使用primefaces 3.5
预先感谢


问题答案:

ui:repeat不是呈现的组件,因此您不会在HTML中看到任何有关它的信息。您无法更新未呈现的内容。另外,ui:repeat甚至没有一个id属性。

您需要将ui:repeat组件包装在这样的组件中h:panelGroup

<h:panelGroup id="alvs">
    <ui:repeat ...>
    </ui:repeat>
</h:panelGroup>

并在您的按钮中更新面板组:

<p:commandButton value="Calculator" actionListener="#{myBean.priceCalc}" process="@this,alvs" update="alvs" />

请注意,:hour由于您无法指定,我已将其删除,因此每次重复的ID都会有所不同。

更多信息 :

  • JSF 2.0 ui:重复


 类似资料:
  • 我有一个使用rowedit的p:datatable,可以正常工作,但是当您删除一个条目时,datatable没有更新。 xhtml

  • 我正在使用Primefaces 3.3.1和Tomcat 7.0.22.0。我有p:dataTable,其中有p:inputtext。p:dataTable的id是“housetabid:tabview:form0:table”。这是从HTML源复制粘贴的。并且我让dialog(在dataTable所驻留的表单之外)通过p:dataTable中的按钮打开,并且该对话框中的p:CommandButt

  • JSF的 @ViewScoped不可用,因为它与CDI冲突 提交表单时,JSF动态呈现组件的值变为空 有条件呈现的输入组件不更新值 未调用CommandButton/CommandLink/Ajax操作/Listener方法或未更新输入值 我能想到导致这种行为的几种情况: “rendered”似乎是基于backing bean中的值重新计算的,而不是UI中给出的新值(如果默认为1,则提交时再次为1

  • 我有一个功能组件,它用useState初始化一个状态,然后通过一个输入字段改变这个状态。 然后,我有一个useEffect钩子来模拟componentWillUnmount,以便在组件卸载之前,将当前更新的状态记录到控制台。但是,将记录初始状态,而不是当前状态。 这是我试图做的一个简单的表示(这不是我的实际组件): 我将状态初始化为“初始”然后我使用输入字段来改变状态,比如我键入“新文本”但是,当

  • 我有一个带有两组按钮(功能和目标)的界面。当我点击一个按钮时,我希望它从一个团队转到另一个团队。我正在用react和redux实现这一点。我唯一的问题是,当状态更新并且我成功地记录了更新的状态时,除非我使用forceUpdate(),否则组件不会更新。我不明白的是,既然状态更新成功,组件不应该自动重新渲染吗? 一些js 正如您所看到的,当我单击一个按钮时,我触发updateLists函数,该函数将

  • 我有一个带有单元格编辑的primefaces datatable,它可以在视图中的一个布尔变量上切换。 我有三个问题: 在编辑模式下,我更改了一个值,然后单击页面上的“保存”按钮,它不会保留新值,如果我先单击页面上的任何其他位置,然后单击“保存”,它将保留该值。如果您先单击“保存”,我需要它来保留值。 如果我编辑了一个输入文本的单元格,然后我单击了它,那么该字段现在就是一个输出文本,直到我再次单击