我有一个标准的 JSF h:form,其中包含一个 h:SelectOneMenu 控件。只要我从呈现页面时填充的列表中选择一个项目,它就可以完美地工作。我认为这并不重要,但将其放在上下文中,选择的值用于构建返回匹配记录列表的查询。
我已经在控件上实现了 JQuery 自动完成框,只要我选择其中一个原始值,它仍然可以正常工作。
当我在呈现页面时输入不在选择控件中的值时,就会出现问题。使用 JQuery,我对其进行了设置,以便当输入不在列表中的值时,将该值作为新选项添加到选择中。
我可以验证该选项是否已添加到底层选择控件,并通过 javascript 进行选择。但是,当在这之后立即在支持 bean 中调用 setter 时,传入 setter 的值为 null,并且永远不会到达运行查询的函数。AJAX 响应中返回以下错误,但我还没有找到验证值的位置。它也不是必填字段。
验证错误:值无效
这是我的前端代码:
<h:selectOneMenu id="make" styleClass="combobox" value="#{listBean.make}"
effect="fade" label="#{listBean.makeLabel}" >
<f:selectItems value="#{listBean.makeList}" />
</h:selectOneMenu>
以及 bean 中的设置器:
public void setMake(String make) {
this.make = make;
}
我猜我只需要找到一种方法将新选项包含在支持 bean 的 makeList 列表中,但我不知道该怎么做。任何帮助或建议将不胜感激。
Java EE 6、GlassFish 3.1、Eclipse 3.7 - 在 FireFox 和 Chrome 上都观察到问题