【问题标题】:Trigger Spring Web Flow view transition with f:ajax on JSF input field在 JSF 输入字段上使用 f:ajax 触发 Spring Web Flow 视图转换
【发布时间】:2013-10-04 05:07:38
【问题描述】:

是否可以通过将 标签放在 中来触发 Web 流转换,以便在每次按键时发送请求?

我已经尝试过了,ajax 请求由浏览器发送,由应用程序接收并由 JSF 处理,但 Web Flow 未观察到该事件。

<!-- does not trigger transition -->
<h:inputText id="search" value="#{friendsForm.searchUsername}">
   <f:ajax listener="search" 
           execute="@this" 
           render="users" 
           event="keypress"/>
</h:inputText>

<!-- does trigger transition -->
<h:commandButton value="search" action="search">
   <f:ajax listener="search" execute="search" render="users"/>
</h:commandButton>

对 commandButton 执行相同操作时,它会按预期工作。查看源代码可以看到按钮的基类 UICommand 调用其默认的 ActionListener 最终触发转换。 inputText 似乎没有动作侦听器,因此没有在那里处理事件。

最后,我可以通过在每次按键时以编程方式单击隐藏按钮来解决此问题,但如果可以避免这种情况,我会这样做。

提前谢谢...

【问题讨论】:

    标签: ajax spring jsf transition spring-webflow


    【解决方案1】:

    我找到了this post about how to trigger a transition on value change in h:selectOneMenu,该解决方案运行良好,即使对于我的用例也是如此。

    我在f:ajax 上定义了侦听器属性以指向一个spring bean 的方法,该方法又获取RequestControlContext 以处理触发转换的新事件。

    RequestContext requestContext = RequestContextHolder.getRequestContext();
    RequestControlContext rec = (RequestControlContext) requestContext;
    rec.handleEvent(new Event(this, "search"));  
    

    这样我就不用引入隐藏按钮并将按键事件翻译成点击事件了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      相关资源
      最近更新 更多