如何使用h:commandButton转发

时间:2014-06-30 12:54:01

标签: jsf primefaces commandbutton

我有一个视图,其中我有一个p:commandButton的表单,一切正常,因为我使用forward这就是我需要的:

<h:form id="formularioAltas">
    // More code
    <p:commandButton value="Guardar" action="#{altasBean.agregarRefaccion()}" update="cboAlmacen cboEstado cboCategoria" />
</h:form>

方法agregarRefaccion() 无效因此不会更改页面,我认为forward会在该操作后发生,因为它始终具有相同的网址。那是好的,这就是我需要的。

在同一视图中,我有另一种形式,我遇到h:commandButton的问题。

<h:form id="myForm" enctype="multipart/form-data" prependId="false">
    // More code
    <h:commandButton id="button" style="background-color: black; color: aliceblue" value="Guardar imagen para #{altasBean.refaccion.idRefaccion}" action="#{altasBean.subirImagen()}" />
</h:form>

subirImagen()方法也是无效,所以我认为在该行动之后会发生前进......但它并没有。页面更新和网址更改,这意味着重定向就是这样。

我将永远需要前锋。无论是p:commandButton还是h:commandButton

我认为PrimeFaces和p:commandButton与JSF h:commandButton的区别有所不同。

所以我需要一个前锋 h:commandButton

修改

我总是有这样的网址 blabla / AlmacenGM /

但当h:commandButton出现时,网址为: blabla / AlmacenGM / faces / altas.xhtml

网址发生变化。我试图在方法"altas"中返回字符串subirImagen(),因此应该进行转发,但它仍然会更改网址。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

p:commandButton没有前锋。它实际上是一个ajax请求你正在执行什么,因为它是它的默认行为。

但是,标准JSF h:commandButton会执行转发请求,只要您在操作方法中返回带有导航案例的String即可。如果你看到重定向发生在那里,你必须在你的bean端强制它。

另见: