0

在我的一个项目中,我们使用 jsf/primefaces 进行开发,并且有特定要求不要对模糊或更改输入字段的事件进行任何 ajax 调用。

我们需要显示记录列表。用户还可以添加或删除记录。

我正在使用下面的 xhtml 代码

       <h:form id="wizard_form">
    <p:outputPanel id="idBiomassPlantsPanel">
        <ui:repeat var="item" value="#{controller.iteamList}">
            <p:inputText id="field1" value="#{item.field}">
                <f:validateLongRange maximum="10" minimum="2" />
            </p:inputText>
            <p:message display="text" for="field1" />
            <p:commandLink id="idDeleteBiomassPlantsLink" value="Delete record"
                update="wizard_form:idBiomassPlantsPanel" immediate="true"
                process="@this" actionListener="#{controller.deleteBioMassPlants()}">
            </p:commandLink>
        </ui:repeat>
        <p:inputText id="testfield" value="#{controller.field}">
            <f:validateLongRange maximum="10" minimum="2" />
        </p:inputText>
    </p:outputPanel>
    <p:commandButton id="addBiomassPlantsButton" value="add new"
        action="#{controller.addBioMassPlantsData}" update="@form"
        process="@form" />
</h:form>

单击“添加新”按钮时,我们正在处理整个 UI 表单。这个按钮工作正常。如果用户单击“删除记录”按钮,我不想触发验证,因为即使输入了不正确的值,用户也应该能够删除记录。我使用了 immediate="true" 来跳过验证,但在这种情况下,所有输入字段都会重置为 NULL 或其他未删除记录的初始值(例如:如果我输入三个记录并且第二个记录被删除,那么第三个记录的值用 null 更新。)

我在使用 process="@this" 时尝试删除 immediate="true" 然后我也面临同样的问题。

我在 UI 重复之外创建了一个测试输入字段。单击删除按钮不会更改此字段的值。所以似乎问题在于只有输入字段在 UI:repeat 内。

非常感谢对此的任何帮助或指示。

4

0 回答 0