![](/img/trans.png)
[英]Use of a4j:commandbutton vs h:commandbutton to present-new-pages in richfaces
[英]How to use RichFaces a4j:commandButton not using submit
我有一個a4j:commandButton
,看起來像這樣
<a4j:commandButton id="stopBtn" type="button" reRender="lastOp"
action="#{MyBacking.stop}" value="Stop" />
</a4j:commandButton>
部署應用程序並單擊按鈕時,不會調用stop()方法。 所有a4j:commandButton
示例都引用表單,但此按鈕不在表單中 - 它是用戶將用於使服務器運行某些后端邏輯的按鈕。 目前,方法是
public void stopNode() {
logger.info("STOPPING");
setLastOp("Stopped.");
}
不使用這種類型按鈕的其他方法是更新lastOp字段,但我沒有在控制台上看到任何這個。 我是否正確將其作為按鈕投射? 我應該把它放在一個h:form
標簽中嗎?
firebug控制台說:
this._form is null
我不明白。
任何幫助很好的贊賞。
UICommand
組件應該放在UIForm
組件中。 所以,你的猜測
我應該把它放在一個
h:form
標簽中嗎?
完全正確:)這是因為它們觸發了一個POST
請求,唯一的(正常)方式是使用一個HTML <form>
元素,其method
屬性設置為"post"
。 Firebug還表示期望父表單元素,但它解析為null
,因此不能執行任何操作。
只有像h:outputLink
和h:outputLink
這樣的“普通香草”鏈接不需要表單,因為它們只是觸發GET
請求。
是的,將其包裹在表格中。 我確定BalusC會在我輸入答案時發布詳細解釋。 (是的,那里)
在發布之前,我不得不問你為什么不先嘗試表格。
看看你的代碼:
<a4j:commandButton id="stopBtn" type="button" reRender="lastOp" action="#{MyBacking.stop}" value="Stop" />
你用/>
完了<a4j:commandButton
,為什么需要那個orphan </a4j:commandButton>
?
如果由於某種原因您不想將按鈕放在表單中,您可以執行以下操作:
<a4j:commandButton onclick="fireAjax()"/>
<h:form>
<a4j:jsFunction name="fireAjax" action=".."/>
</h:form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.