【问题标题】:jsf 2.2.x AjaxBehaviorEvent listener no refresh multipart/form-datajsf 2.2.x AjaxBehaviorEvent 监听器没有刷新 multipart/form-data
【发布时间】:2014-07-05 10:19:53
【问题描述】:

我有一个

<h:form prependid="true" enctype="multipart/form-data" > 
  <h:inputText value="#{mybean.someStringField}" />
  <h:inputFile id="myFile" value="#{mybean.somePartField}" /> 
  <h:selectOneMenu value="#{mybean.someField}" >   
    <f:selectItems value="#{mybean.someSelectItemList}" >
    <f:ajax event="change" execute="@form" render="@form" immediate="true" listener="#{mybean.someListenerAjaxBehaviorEvent}" />
  </h:selectOneMenu>  
</h:form>

当 selectOneMenu 上的值改变时这个表单没有刷新表单

someListenerAjaxBehaviorEvent 方法由如下代码组成

public void someListenerAjaxBehaviorEvent(AjaxBehaviorEvent ev) throws AbortProcessingException {
  try
  {
    String code = (String)((UIOutput)ev.getSource()).getValue();
    ...
    // Some SQL sentences for update data list
  }
  catch(Exception ex)
  {
    ex.printStackTrace();
  }
}

当表单不是“multipart/form-data”类型时,此方法可以正常工作,但我需要在此表单上附加一些文件。 任何人有任何想法可以帮助我解决问题,我非常感谢他们的贡献

【问题讨论】:

  • 多部分表单似乎是出了名的错误。当您触发该事件时会发生什么?是否生成了请求?你的听众被叫了吗?
  • 什么都没有发生,监听器没有触发,我添加了一条消息来控制台监听器“System.out.println(“message”)”,但是没有显示
  • 我还没有解决这个问题,谁能帮帮我

标签: ajax jsf-2 listener


【解决方案1】:

抱歉,我无法添加评论。

您应该使用&lt;/h:form&gt; 而不是&lt;/form&gt; 来关闭表单。 您是否尝试将一些日志添加到方法 someListenerAjaxBehaviorEvent 以检查它是否被调用?

【讨论】:

  • "对不起,我在这个问题上错了,但在我的代码中是结束标记"
  • 您使用哪个 JSF 版本? JSF 2.2.x 在早期版本中有一个错误。试用最新版本。
  • 目前使用 JSF 2.2.6,但我也测试过 2.2.2 和 2.2.3,但任何版本都可以使用
猜你喜欢
  • 2013-03-21
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
相关资源
最近更新 更多