2014-01-27 1 views
2

Я использую Richfaces-4.3.5 на Wildfly-8.0.0.CR1 здесь, перейдя с <rich:fileUpload>, который не работает с JSF-2.2/Servlet-3.0. Я заменить его с этим фрагментом:Как я могу отредактировать окончательную загрузку с помощью <h:inputFile>?

<rich:popupPanel id="testPop" autosized="true"> 
    <h:form id="uploadF" enctype="multipart/form-data"> 
     <h:inputFile value="#{bean.file}"> 
      <a4j:ajax listener="#{bean.storeFile()}" render="@form,:fileListTbl" 
       oncomplete="#{rich:component('testPop')}.hide();" /> 
     </h:inputFile> 
    </h:form> 
</rich:popupPanel> 

Это прекрасно работает в том, что метод storeFile называется, и я могу получить доступ к bean.file просто отлично. Тем не менее, я хотел бы закрыть rich:popupPanel, когда я закончил загрузку, поэтому мне нужно отреагировать на успешные/полные события запроса ajax. Но это не представляется возможным - всплывающее окно остается видимым и ответ явно неполна (с отступом для лучшей читаемости):

<?xml version='1.0' encoding='UTF-8'?> 
<partial-response id="j_id1"> 
    <changes> 
    <update id="j_id1:javax.faces.ViewState:0"> 
     <[CDATA[-1186354868983349335:-5499969782208038164]]> 
    </update> 
    <extension id="org.richfaces.extension"><render>@component</render></extension> 
    </changes> 
</partial-response> 

Хотя RichFaces отладочные сообщения указывают на обработчики являются называться:

RichFaces: Received 'success' event from <input id=uploadF:j_idt1136 ...> 
RichFaces: Received 'complete' event from <input id=uploadF:j_idt1136 ...> 

Итак, простой вопрос: как я могу получить всплывающее окно для закрытия и компоненты, которые нужно перерисовать?

ответ

1

Я не уверен, связана ли проблема напрямую с a4j:ajax или что нужно сделать, чтобы она работала с a4j:ajax, но код, как представляется, работает с f:ajax.

<h:form id="formId"> 
    <h:commandLink value="popup" 
     onclick="#{rich:component('testPop')}.show(); return false;" /> 
</h:form> 

<rich:popupPanel id="testPop" autosized="true"> 
    <h:form id="uploadF" enctype="multipart/form-data"> 
     <h:inputFile value="#{bean.file}"> 
      <f:ajax listener="#{bean.storeFile()}" render="@form :fileListTbl" 
       onevent="eventHandler"/> 
     </h:inputFile> 
    </h:form> 
</rich:popupPanel> 

<script> 
    function eventHandler(event) 
    { 
     if (event.status == 'success') 
     { 
      #{rich:component('testPop')}.hide(); 
     } 
    } 
</script> 
Смежные вопросы