2012-06-08 56 views
2

我有一個搜索表單,它使用標準HTML <form>標記併發送GET請求,如search.jsf?country=x&city=y。它們在視圖範圍的bean中被設置爲視圖參數。如何在普通<form>中使用<f:ajax>而不是<h:form>?

搜索表單包含兩個級聯下拉菜單,一個用於國家,一個用於城市。如何在不更改<form><h:form>的情況下更新城市下拉框<f:ajax>,從而突破GET功能?我是否必須使用XMLHttpRequest的「普通香草」ajax?我如何在JSF支持bean上使用它?

回答

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")); 
} 
相關問題