2

ここでは Wildfly-8.0.0.CR1 で Richfaces-4.3.5 を使用していますが、そこからの移行は<rich:fileUpload>JSF-2.2/Servlet-3.0 では機能しません。私はそれをこのスニペットに置き換えています:

<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 ...> 

簡単な質問: ポップアップを閉じて、コンポーネントを再レンダリングするにはどうすればよいですか?

4

1 に答える 1