gpt4 book ai didi

java - 是否可以有一个带有验证的表单并使用丰富的:modalPanel for data entry too?

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:24 24 4
gpt4 key购买 nike

Richfaces 3.3.3、Jsf 1.2:

我有一个 a4j:form,它使用一些简单的验证,主要是 required="true" 以确保在没有一些必要数据的情况下不会提交表单。

我还有一些复杂的数据要添加(可选)到表单中,因此我认为最好的方法是使用一个 a4j:commandButton 来显示 rich:modalPanel,用户可以在其中创建复杂的数据集。

创建的数据也会显示在 h:selectManyListbox 中,当 modalPanel 关闭时,该数据会重新渲染。

至少这是计划。我有以下问题:

  • reRender 可以工作,但前提是我通过 immediate="true" 阻止验证 - 这反过来又似乎阻止了 modalPanel 中选定的数据出现在支持 Bean 中
  • 如果我删除立即标记,数据就会更新,但前提是不存在验证错误

让它按我想要的方式工作的最佳方法是什么?还有其他更好的方法吗?

更新:

失败的验证位于表单的某个不同部分,而不是在通过 modalPanel 输入的数据中,该数据显示在列表框中

代码:

模态面板:

<rich:modalPanel id="addTrimming" domElementAttachment="parent" width="150" height="130">
<f:facet name="header">
<h:panelGroup>
<h:outputText value="Define Filter" />
</h:panelGroup>
</f:facet>
<f:facet name="controls">
<h:panelGroup>
<h:graphicImage value="/images/close.gif" styleClass="hidelink" id="hidelinkAddTrimming"/>
<rich:componentControl for="addTrimming" attachTo="hidelinkAddTrimming" operation="hide" event="onclick"/>
</h:panelGroup>
</f:facet>

<h:panelGrid id="trimsettings" columns="3">
<h:outputText value="Target:" style="font-weight:bold"/>
<h:inputText id="target" label="XML Filename" required="true" value="#{xmlCreator.trimTarget}">
</h:inputText>
<h:outputText value=""/>

<h:outputText value="Mode:"/>
<h:selectOneMenu value="#{xmlCreator.trimMode}">
<f:selectItem itemLabel="Quality" itemValue="quality"/>
<f:selectItem itemLabel="after Primer" itemValue="afterPrimer"/>
<f:selectItem itemLabel="fixed" itemValue="fixed"/>
<f:selectItem itemLabel="Median length" itemValue="median"/>
<f:selectItem itemLabel="Motif" itemValue="motif"/>
</h:selectOneMenu>
<h:outputText value=""/>

</h:panelGrid>

<h:panelGroup>
<a4j:commandButton value="OK" action="#{xmlCreator.createTrimming}" onclick="from:submit()">
<a4j:support event="oncomplete" ajaxSingle="true" immediate="true" reRender="trimsPanel"/>
</a4j:commandButton>
</h:panelGroup>
</rich:modalPanel>

相关表单部分:

<h:outputText value="Trimming:"/>
<a4j:outputPanel id="trimsPanel">
<h:selectManyListbox id="trims" value="#{xmlCreator.selectedTrimmings}">
<f:selectItems value="#{si:toSelectTrimmingList(xmlCreator.trimmings)}"/>
</h:selectManyListbox>
</a4j:outputPanel>
<a4j:commandButton id="addTrimButton" immediate="true" value=" + Trimming">
<rich:componentControl for="addTrimming" attachTo="addTrimButton" operation="show" event="onclick"/>
</a4j:commandButton>

最佳答案

如果您以一种形式执行此操作,则应将其分成两种:一种是您的主形式,另一种是模式面板内的形式。因此,您将能够独立于主表单提交模式面板,并且模式面板中的提交按钮将如下所示:

<a4j:commandButton value="OK" action="#{xmlCreator.createTrimming}" reRender="trimsPanel"/>

关于java - 是否可以有一个带有验证的表单并使用丰富的:modalPanel for data entry too?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com