我有一个搜索表单,它使用标准 HTML<form>
标记并像这样发送一个 GET 请求search.jsf?country=x&city=y
。它们被设置为视图范围 bean 中的视图参数。
搜索表单包含两个级联下拉菜单,一个用于国家,一个用于城市。如何在<f:ajax>
不更改<form>
并<h:form>
因此破坏 GET 功能的情况下更新城市下拉列表?我必须使用“普通香草”ajaxXMLHttpRequest
吗?我如何在 JSF 支持 bean 上使用它?
<h:form>
只要提交按钮提交,我就会继续使用JavaScript 并寻求一些帮助,以便将其转换为 GET 表单。
就像是:
<h:form prependId="false" onsubmit="doGet(this)">
<h:selectOneMenu id="country" value="#{bean.country}">
<f:selectItems value="#{bean.countries}" />
<f:ajax listener="#{bean.loadCities}" render="city" />
</h:selectOneMenu>
<h:selectOneMenu id="city">
<f:selectItems value="#{bean.cities}" />
</h:selectOneMenu>
<input type="submit" value="Search" />
</h:form>
用这个 JS 把它变成一个 GET 表单并删除两个<h:form>
特定的隐藏字段:
function doGet(form) {
form.method = "get";
form.removeChild(document.getElementsByName(form.name)[1]);
form.removeChild(document.getElementById("javax.faces.ViewState"));
}