如何使用RichFaces a4j:commandButton不使用submit

时间:2010-03-01 19:00:12

标签: java jsf richfaces

我有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标签中吗?

萤火虫控制台说:

this._form is null

我不明白。

任何帮助都很受欢迎。

4 个答案:

答案 0 :(得分:7)

UICommand组件应放在UIForm组件中。所以,你的猜测

  

我应该将其放在h:form标签中吗?

完全正确:)这是因为它们触发POST请求,唯一(正常)方式是使用<form>属性设置为{method的HTML "post"元素1}}。 Firebug还表示期望父表单元素,但它已解决为null,因此无法执行任何操作。

只有h:outputLink和consorts这样的“普通香草”链接不需要表单,因为它们只会触发GET请求。

答案 1 :(得分:2)

是的,将其包裹在表格中。我确定BalusC会在我输入答案时发布详细解释。 (是的,那里)

我不得不问你为什么不先发表一张表格,然后再发帖。

答案 2 :(得分:1)

看看你的代码:

<a4j:commandButton id="stopBtn" type="button" reRender="lastOp" action="#{MyBacking.stop}" value="Stop" /> 

您使用<a4j:commandButton完成了/>,为什么需要孤儿</a4j:commandButton>

答案 3 :(得分:1)

如果由于某种原因您不想将按钮放在表单中,您可以执行以下操作:

<a4j:commandButton onclick="fireAjax()"/>

<h:form>
   <a4j:jsFunction name="fireAjax" action=".."/>
</h:form>