3

標準の HTML<form>タグを使用して GET リクエストを送信する検索フォームがありますsearch.jsf?country=x&city=y。これらは、ビュー スコープ Bean のビュー パラメータとして設定されます。

検索フォームには、国用と都市用の 2 つのカスケード ドロップダウンが含まれています。<f:ajax>GET 機能を変更<form><h:form>て壊すことなく、都市のドロップダウンを更新するにはどうすればよいですか? で「プレーンバニラ」ajaxを使用する必要がありXMLHttpRequestますか? JSF バッキング Bean でどのように使用できますか?

4

1 に答える 1

1

<h:form>送信ボタンで送信されたときはいつでも JavaScript を GET フォームに変換するために、JavaScript を使用し続け、支援を求めるだけです。

何かのようなもの:

<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 フォームに変換し、2 つの<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 に答える