我在JSF Web应用程序中使用primefaces。为了获得用户输入,我使用了primefaces键盘组件,它工作正常。问题是从键盘组件获取用户输入并单击commandButton导致页面重新加载。
<p:keyboard id="default" value="#{paymentBean.mobileNumber}" keypadOnly="true" size="50" for="numberInput" />
<p:commandButton id="enterNoteBtn" action="#{paymentBean.validatePayment()}" value="#{msg['billpayment.cash.message']}"
onclick="onEnterNoteBtn();" async="true" />
但是当使用primefaces inputText而不是键盘组件时,它不会导致页面重新加载。
<p:inputText id="numberInput" value="#{paymentBean.mobileNumber}" autocomplete="off" />
<p:commandButton id="enterNoteBtn" action="#{paymentBean.validatePayment()}" value="#{msg['billpayment.cash.message']}"
onclick="onEnterNoteBtn();" async="true" />
我想弄清楚这种行为的原因(我使用的是primefaces版本5.3.1)。
更新:
我发现页面提交的原因是点击按钮时调用javascript函数。
function onEnterNoteBtn(){
var number = document.getElementById("cashForm:numberInput").value;
}
由于ID无效,导致表单提交。
感谢。