我正在尝试构建一个具有三个不同选择的界面,第一个选择将呈现第二个,第二个选择将加载数据,并且在用户从第二个选择中选择一个选项后,这将呈现第三个将加载其数据的选择等待用户选择最终选项。
在调试并尝试解决这个问题之后,我看到最后一个方法是使用空值调用的,我猜这是因为 bean 是请求范围的,并且在 AJAX 请求被销毁之后。如果不多次调用数据库并使用非会话范围的 bean,我该如何解决这个问题?
<h:selectOneMenu value="#{RequestBean.firstSelectValue}" id="first">
<f:selectItem id="default" itemLabel="Select one" itemValue="-1" />
<f:selectItems value="#{RequestBean.firstSelectElements}"
var="var" itemLabel="#{var.label}"
itemValue="#{var.value}" />
<f:ajax event="change" render="second" onevent="selectListener"/>
</h:selectOneMenu>
<h:selectOneMenu value="#{RequestBean.secondSelectValue}" id="second">
<f:selectItem id="default" itemLabel="Select one" itemValue="-1" />
<f:selectItems value="#{RequestBean.secondSelectElements}"
var="var" itemLabel="#{var.label}"
itemValue="#{var.value}" />
<f:ajax event="change" render="third" onevent="selectListener/>
</h:selectOneMenu>
<h:selectOneMenu value="#{RequestBean.third SelectValue}" id="third">
<f:ajax event="change" render="someTextArea" onevent="selectListener" />
<f:selectItem id="default" itemLabel="Select one" itemValue="-1" />
<f:selectItems value="#{RequestBean.getThirdSelectElements(RequestBean.secondSelectValue)}"
var="var" itemLabel="#{var.label}"
itemValue="#{var.value}" />
</h:selectOneMenu>