【问题标题】:How to execute transition on value change in h:selectOneMenu?如何在 h:selectOneMenu 中执行值更改转换?
【发布时间】:2011-06-19 02:38:52
【问题描述】:

通常我会做类似下面的事情。单击按钮执行过渡。

<!-- view -->
<h:form>
  <h:commandButton action="doit">
    <f:ajax render="@form"/>
  </h:commandButton>
</h:form>

<!-- flow -->
<transition on="doit">...</transition>

如何在(例如)h:selectOneMenu 中更改值时触发转换?

<h:form>
  <h:selectOneMenu value="#{selected}">
    <f:selectItems value="#{items}/>
    <f:ajax event="valueChange" render="@form" />
  </h:selectOneMenu>
</h:form>


编辑: 我考虑过向 f:ajax 注册监听器并准备 webflow 事件,但是如何使用该事件......?有人帮忙吗?

<h:form>
  <h:selectOneMenu value="#{selected}">
    <f:selectItems value="#{items}/>
    <f:ajax event="valueChange" render="@form" listener="#{bean.changeListener}" />
  </h:selectOneMenu>
</h:form>

java:

import javax.faces.event.AjaxBehaviorEvent;
import org.springframework.webflow.execution.Event;

public class Bean {
     public void changeListener(AjaxBehaviorEvent event) {
         // prepare webflow event
         Event e = new Event(event.getSource(), "doit");
         // propagate this event... ???
     }
}

【问题讨论】:

    标签: jsf-2 spring-webflow-2


    【解决方案1】:

    我最近遇到了类似的问题,并以类似的侦听器样式处理 primefaces/richfaces 事件。这是一个例子:

        public void changeListener(AjaxBehaviorEvent event) {  
        RequestContext requestContext = RequestContextHolder.getRequestContext();
        RequestControlContext rec = (RequestControlContext) requestContext;
        //place variables you need in next flow phase here; flash,application,session scope
        rec.getFlashScope().put("someVarIneedInNextFlow", varName);
        rec.handleEvent(new Event(this, "flow transition name here, i.e. next-stage"));
        return;
    }
    

    这应该过渡到您想要的任何流程事件:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2011-06-14
      相关资源
      最近更新 更多