ajax - 选择单选按钮时弹出错误提示框
问题描述
我们正在实现文本框禁用或启用 jsf 输入组件的功能,具体取决于另一个输入组件(单选按钮)的值。该功能有效,但弹出警告框并显示错误
malformedXML: During update: new:j_idt335 not found
当我点击收音机选择选项
单选按钮男性 O 单选按钮女性 O
输入框文本字段男性 [_____] 女性 [_____]
选择男性的单选按钮后,女性的输入框被禁用
选择女性的单选按钮后,男性的输入框被禁用
<ui:composition 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:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
template="/src/template.xhtml">
<ui:define name="content">
<h:form id="new" enctype="multipart/form-data">
<h:panelGroup id="id2">
<p:growl id="growl" sticky="true" showDetail="true" />
<p:wizard id="newWizard" showNavBar="true" widgetVar="wiz" flowListener="#{SelectMB.handleFlow}">
<p:tab id="tab"
title="Form">
<ui:include src="/jsf/formgender.xhtml" />
</p:tab>
</p:wizard>
</h:panelGroup>
</h:form>
</ui:define>
formgender.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:pe="http://primefaces.org/ui/extensions"
>
<p:panel id="type" styleClass="panelNoBorder">
<p:fieldset toggleable="true" toggleSpeed="500"
legend="Info">
<div class="ui-g">
<div class="ui-g-1"><p:outputLabel value="genderType" /></div>
<div class="ui-g-3">
<p:row>
<h:selectOneRadio value="#{SelectMB.genderType}">
<f:selectItem itemValue="male"
itemLabel="male" />
<f:selectItem itemValue="female"
itemLabel="female" />
<f:ajax render="male" />
<f:ajax render="female" />
</h:selectOneRadio>
</p:row>
</div>
<div class="ui-g-1"><p:outputLabel value="male" /></div>
<div class="ui-g-3">
<p:row>
<p:inputText id="male" value="#{SelectMB.male}"
disabled="#{SelectMB.genderType eq 'female'}" />
</p:row>
</div>
</div>
<div class="ui-g">
<div class="ui-g-1"><p:outputLabel value="female" /></div>
<div class="ui-g-3">
<p:row>
<p:inputText id="female" value="#
{SelectMB.femaleList}" disabled="#{SelectMB.genderType eq 'male'}"
/>
</p:row>
</div>
</div>
</p:fieldset>
</p:panel>
SelectMB.java
private String genderType;
public String getgenderType() {
return genderType;
}
public void setgenderType(String genderType) {
this.genderType = genderType;
}
private String male;
private String femaleList;
public String getMale() {
return male;
}
public void setMale(String male) {
this.male = male;
}
public String getFemaleList() {
return femaleList;
}
public void setFemaleList(String femaleList) {
this.femaleList = femaleList;
}
该功能按预期工作。
错误信息:-
当我单击无线电选择选项时,功能按预期工作,但警告框中显示错误消息。
malformedXML: During update: new:j_idt335 not found
预期成绩:-
如果选择了“一个”单选按钮,则应禁用另一个选项的文本输入字段。
最小的可重现示例。jsf.2.0版
template.xhtml
<h:form id="new" enctype="multipart/form-data">
<ui:include src="/jsf/formgender.xhtml" /> </h:form>
formgender.xhtml
<h:selectOneRadio value="#{SelectMB.genderType}">
<f:selectItem itemValue="male" itemLabel="male" />
<f:selectItem itemValue="female" itemLabel="female" />
<f:ajax render="male" /> <f:ajax render="female" />
</h:selectOneRadio>
<p:inputText id="male" value="#{SelectMB.male}" disabled="#{SelectMB.genderType eq 'female'}" />
<p:inputText id="female" value="#{SelectMB.femaleList}" disabled="#{SelectMB.genderType eq 'male'}" />
解决方案
尝试将两个输入都添加到 div 并像下面那样呈现该 div
<h:selectOneRadio value="#{SelectMB.genderType}">
<f:selectItem itemValue="male" itemLabel="male" />
<f:selectItem itemValue="female" itemLabel="female" />
<f:ajax render="input_" />
</h:selectOneRadio>
<h:panelGrid layout="block" id="input_">
<p:inputText id="male" value="#{SelectMB.male}" disabled="#{SelectMB.genderType eq 'female'}" />
<p:inputText id="female" value="#{SelectMB.femaleList}" disabled="#{SelectMB.genderType eq 'male'}" />
</h:panelGrid>
推荐阅读
- flutter - 使用 Shared Preferences 包实现数据持久性
- apache-nifi - NGINX 代理背后的 NiFi 远程进程组 未经授权/匿名
- kubernetes-helm - helm - 如何迭代具有复杂值的地图
- php - .htaccess RewriteMod 在 XAMPP 中无法正常工作
- python - openpyxl 版本 2.6.4 的问题 - 'MergedCell' 对象属性 'value' 是只读的
- r - 在 R 中保存一个 for 循环
- java - 每天使用 Spring Boot 重置一个变量
- r - 比较两个数据帧并将最合适的值替换为一个数据帧
- android - 在活动之间切换时保持特定活动处于活动状态
- reactjs - Object.Array.map 是未定义的 ReactJS 组件 MERN 堆栈