jsf 2.2.x AjaxBehaviorEvent监听器没有刷新multipart / form-data

时间:2014-05-16 20:37:10

标签: ajax jsf-2 listener

我有一个

<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”类型时,此方法可以正常工作,但我需要在此表单上附加一些文件。 任何人都有任何想法可以帮助我解决问题,我非常感谢他们的贡献

1 个答案:

答案 0 :(得分:0)

抱歉,我无法添加评论。

您应该使用</h:form>代替</form>来关闭表单。 您是否尝试将一些日志添加到某些侦听器AjaxBehaviorEvent的方法以检查它是否被调用?