我有一个使用标准HTML <form>
标记的搜索表单,并发送一个像search.jsf?country=x&city=y
这样的GET请求。它们在视图范围的bean中设置为视图参数。
搜索表单包含两个级联下拉菜单,一个用于国家/地区,另一个用于城市。如何更新<f:ajax>
的城市下拉列表而不将<form>
更改为<h:form>
,从而打破GET功能?我是否必须XMLHttpRequest
使用“普通香草”ajax?我怎么能在JSF支持bean上使用它?
答案 0 :(得分:1)
我只是继续使用<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"));
}