Tengo un JSF
+ Spring Web Flow
aplicación y me gustaría pasar de una vista a otra utilizando un método definido en frijol de la vista.
Por lo tanto, mi flow.xml es como la siguiente:
<flow ...>
<var name="myBean" class="mypackage.myclass" />
<view-state id="list">
<transition on="myEvent" to="#{myBean.onMyEvent()}"
</view-state>
</flow>
En el frijol he definido:
public String onMyEvent(final SelectEvent event) {
//Do something
return "input";
}
El botón es simplemente:
<h:commandButton id="myButton" action="myEvent" ajax="false" value="myButton" />
Cuando pulso en el botón que contiene el action="myEvent"
me sale el error:
EL1004E: Método de llamada: Método onMyEvent () no se puede encontrar el tipo de [...]
Entonces, ¿qué hay de malo en mi código? ¿Cómo puedo llamar a un método en mi frijol en algún evento?
Gracias.
Por último, he resuelto mediante el org.springframework.webflow.engine.RequestControlContext que puede manejar manualmente caso como en el siguiente ejemplo:
lado de extremo delantero (llamada al método del bean):
<h:ajax event="rowSelect" listener="#{myBean.onMyEvent}" />
Bean (hacia adelante al controlador de Spring Web Flow):
public void onMyEvent(final SelectEvent event) {
// Fill the bean for next view
final RequestContext requestContext = RequestContextHolder.getRequestContext();
requestContext.getFlowScope().put("nextBean", nextBean);
final RequestControlContext rec = (RequestControlContext) requestContext;
rec.handleEvent(new Event(this, "myEvent")); // the action managed by Spring Web Flow
}
Y finalmente en la flow.xml
categoría (Gestión de la transición a la siguiente vista)
<view-state id="myView">
<transition on="myEvent" to="nextView" />
</view-state>