根據我的情況,需要首先調用javascript。在javascript調用之後,兩個隱藏值將被更新。使用更新後的隱藏值,必須調用Bean方法。在這種情況下,我正在同時調用javascript和bean方法。所以在我的bean方法中,我沒有得到隱藏字段中的更新值。在jsf中完成javascript調用後如何調用listener或backing bean方法?
點點詳細解釋
文本框(地址)被用來輸入地址。並有兩個隱藏的元素,用於根據地址字段存儲街道名稱和城市名稱。
通過Javascript調用,從谷歌地圖API(codeAddress())收集兩個值(街道名稱和城市名稱)。基於在更新兩個隱藏字段(街道和城市)的文本框中輸入的地址。 Bean方法必須處理更新後的隱藏值。
但是從我的代碼中,同時調用Backing bean和java腳本。所以我沒有得到Backing Bean中的更新值。
我的代碼是下面的:
JSF CODE
<h:form prependId="false">
<div id="panel-one">
<h:outputLabel value="ADDRESS"/>
<h:inputText type="text" id="address" size="40" value="#{Bean.address}"/>
<h:inputHidden id="street" value="#{Bean.streetName}" />
<h:inputHidden id="city" value="#{Bean.city}" />
<h:commandButton type="submit" value="Verify Address"
onclick="checkAddress()">
<f:ajax execute="@form" render="@none" listener="#{Bean.checkAddress()}"/>
</h:commandButton>
</div>
</h:form>
的Javascript
checkAddress() {
document.getElementById("street").value = //Setting value from other javascript API;
document.getElementById("city").value = //Setting value from other javascript API;
}
在上述的javascript收集值以及具有兩個文本框設置它。使用更新的值再次調用支持bean中的checkAddress()方法。 供參考: * checkAddress() *是AJAX呼叫。我在JSF的h:commandButton中犯了錯誤,但不知道如何解決它。任何幫助深表感謝。
爲什麼不直接刪除「actionListener」屬性,只用驗證器做同樣的事情?否則,請在提交方法中移動該邏輯。 – mitpatoliya
@mitpatoliya:請你多解釋一下。提交方法是什麼意思? – ArunRaj
@mitpatoliya:從commandButton中刪除actionListener屬性,並將偵聽器屬性放入ajax標記中。仍然是同樣的結果。這是你試圖說的嗎? – ArunRaj