我有一个JSF
+ Spring Web Flow
应用程序,我想使用在视图的bean中定义的方法从一个视图移动到另一个视图。
所以,我的flow.xml如下:
<flow ...>
<var name="myBean" class="mypackage.myclass" />
<view-state id="list">
<transition on="myEvent" to="#{myBean.onMyEvent()}"
</view-state>
</flow>
在我定义的bean中:
public String onMyEvent(final SelectEvent event) {
//Do something
return "input";
}
按钮很简单:
<h:commandButton id="myButton" action="myEvent" ajax="false" value="myButton" />
当我按下包含action="myEvent"
的按钮时,我得到了错误消息:
EL1004E:方法调用:在类型[...]上找不到方法onMyEvent()
那么,我的代码有什么问题?如何在某个事件中在bean中调用方法?
谢谢。
答案 0 :(得分:0)
最后,我解决了使用org.springframework.webflow.engine.RequestControlContext可以手动处理事件的问题,如以下示例所示:
前端(调用bean的方法):
<h:ajax event="rowSelect" listener="#{myBean.onMyEvent}" />
Bean(转发到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
}
最后进入flow.xml
(管理到下一个视图的过渡)
<view-state id="myView">
<transition on="myEvent" to="nextView" />
</view-state>