3

我有一个搜索表单,它使用标准 HTML<form>标记并像这样发送一个 GET 请求search.jsf?country=x&city=y。它们被设置为视图范围 bean 中的视图参数。

搜索表单包含两个级联下拉菜单,一个用于国家,一个用于城市。如何在<f:ajax>不更改<form><h:form>因此破坏 GET 功能的情况下更新城市下拉列表?我必须使用“普通香草”ajaxXMLHttpRequest吗?我如何在 JSF 支持 bean 上使用它?

4

1 回答 1

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"));
}
于 2012-06-08T13:37:51.393 回答