【发布时间】:2014-05-08 15:01:15
【问题描述】:
我在 JSF 中验证后遇到问题
场景 - 我在表单上有 2 个下拉菜单和 2 个输入字段。在选择第一个下拉列表时,将填充第二个,并且 2 个文本字段的值取决于第一个下拉选择。
1) 因此,当我从第一个下拉列表、第二个下拉列表中选择某个值时,文本字段将填充适当的值。 2)当我单击提交按钮而不从第二个下拉列表中选择值时,它会按预期显示验证消息。 3) 现在我在验证错误/失败后更改了第一个下拉列表的值。文本字段中的值未按要求更改(意味着文本字段值仍显示旧值),但第二个下拉值按预期更改。
注意:- 只有在验证失败后才会出现问题。
<span class="col1 smallRightPadding marginBtmAdDiag">
<rich:select defaultLabel="Select bldng" enableManualInput="true"
id="search_bldng"
value="#{testManagedBean.bldng.bldngID}"
required="true" requiredMessage="#{testHome.selectBldng}">
<f:selectItemsvalue="#{testManagedBean.lstBldng}" var="bldngVar"
itemValue="#{bldngVar.bldngID}" itemLabel="#{bldngVar.bldngCode}">
</f:selectItems>
<a4j:ajax execute="@this" event="selectitem"
listener="#{testManagedBean.populateFloor}"
render="search_floor,hidSelBldng,hidSelFloor,hidSelbldngID" />
</rich:select>
<h:inputHidden id="hidSelBldng" value="#{testManagedBean.bldng.bldngCode}" />
<h:inputHidden id="hidSelbldngID" value="#{testManagedBean.bldng.bldngID}" />
</span>
<rich:select defaultLabel="Select Floor" enableManualInput="true"
id="search_floor"
value="#{testManagedBean.floor.floorID}"
required="true"
requiredMessage="#{testHome.selectFloor}">
<f:selectItems value="#{testManagedBean.floorLst}"
var="flr" itemValue="#{flr.floorID}"
itemLabel="#{flr.floorName}">
</f:selectItems>
</rich:select>
<h:commandButton id="goButtonId" value="#{testHome.goButton}" styleClass="saveButton">
<a4j:ajax event="click" execute="@form" oncomplete="drawLayerFromBtn();"
listener="#{testManagedBean.viewReport}"
render="tableId,hidSelFloor"/>
</h:commandButton>
【问题讨论】:
-
我在上面粘贴了我的代码
-
您指的是哪些文本字段?您的代码中没有文本字段。请花一些精力来格式化您的代码,使其更易于阅读。现在只是一堆乱七八糟的文字