gpt4 book ai didi

ajax - 根据 selectOneRadio 值制作所需的组件

转载 作者:行者123 更新时间:2023-12-01 23:58:09 28 4
gpt4 key购买 nike

JSF2、PrimeFaces 4.0

有一个带有多个 inputFields 和一个 selectOneRadio 的表单(最后还有一些操作按钮):

<p:outputLabel for="R1" value="R1" />
<p:selectOneRadio id="R1" value="#{bean.r1Value}" required="#{bean.r1Condition}" converter="SomeConverter" >
<f:selectItems value="#{bean.r1PossibleValues}" var="r1Var" itemValue="#{r1Var}" itemLabel="#{r1Var}" />
<p:ajax process="@form" update="@form" />
</p:selectOneRadio>

<p:outputLabel for="F1" value="F1" />
<p:inputText id="F1" value="#{bean.value1}" required="#{bean.condition1}" />

<p:outputLabel for="F2" value="F2" />
<p:inputText id="F2" value="#{bean.value2}" required="#{bean.condition2}" />

如果用户选择 selectOneRadio 的第一个值 - 字段 F1 应该是必需的,如果是第二个 - 字段 F2。方法 bean.conditionX 检查 radio 的值(以及一个条件)并返回 true/false。

如果我选择第一个单选值,字段 F1 将更改为必填。然后,如果我改变主意选择第二个单选值 - 我会收到验证错误(该字段 F1 是必需的)。

如果我改变:

<p:ajax process="@form" update="@form"  />

到:

<p:ajax update="@form"  />

然后:- 在 F1 和 F2 中输入一些值,- 在 radio 中选择一个值-> 输入到字段 F1、F2 中的值消失。

如何在不丢失数据和过早验证错误的情况下更改 selectOneRadio 上的必填字段集?

最佳答案

删除 process属性为 <p:ajax>为了使 selectOneRadio 触发部分 Ajax 请求,它只提交 selectOneRadio 本身。填写update带有您需要更新的以空格分隔的组件列表的属性,不包括 inputText 组件,因为您希望保留它们的值,以及它们的 required只有在提交整个表单时才会评估状态。最后,使用 listener <p:ajax>的属性(property)用于调用更新使 inputText 组件成为必需的条件的服务器方法:

<p:selectOneRadio id="R1" value="#{bean.r1Value}" required="#{bean.r1Condition}" converter="SomeConverter" > 
<f:selectItems value="#{bean.r1PossibleValues}" var="r1Var" itemValue="#{r1Var}" itemLabel="#{r1Var}" />
<p:ajax listener="#{bean.myListener()}" update="label1 label2" />
</p:selectOneRadio>
<p:outputLabel id="label1" for="F1" value="#{myBean.condition1 ? '*' : ''}" />
<p:inputText id="F1" value="#{bean.value1}" required="#{bean.condition1}" />
<p:outputLabel id="label2" for="F2" value="#{myBean.condition2 ? '*' : ''}" />

在哪里

public void myListener() {
// changes the values of the required conditions based on selected value
condition1 = true;
condition2 = false;
}

关于ajax - 根据 selectOneRadio 值制作所需的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667450/

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