java - Spring 网络流程 : Call bean's method as target action

标签 java jsf spring-webflow

我有一个 JSF+Spring Web Flow 应用程序,我想使用 View bean 中定义的方法从一个 View 移动到另一个 View 。

所以,我的 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: Method call: Method onMyEvent() cannot be found on type [...]

那么,我的代码有什么问题?我如何在某些事件中调用我的 bean 中的方法?

谢谢。

最佳答案

最后,我使用 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 的转换)

<view-state id="myView">
    <transition on="myEvent" to="nextView" />
</view-state>

关于java - Spring 网络流程 : Call bean's method as target action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54147495/

相关文章:

java - 使用 JSF 的类似 Facebook 的聊天系统(Prime faces 模态对话框)

java - Spring 网络流 : how is a request handled?

spring - 如何将参数传递给spring webflow

java - 使用 bean 创建动态 selectOneRadion

jsf - 表达式语言: Concat String with variable in method-call

java - 2种切入点表达式

java - junit 4.10 : how to get the name of the tests class while running tests

spring-webflow - Spring 网络流

java - ClickListener touchDragged 指针始终为零

java - 为什么小程序上显示的文本在 "keydown"或 "keyup"事件时不会更改?