1

1つのファイルをアップロードした後、別のページにリダイレクトしたいと思います。ソースxhtmlと宛先xhtmlは同じディレクトリにあります。fileUploadListenerMethodで文字列を返そうとしました:

public String loadFills(FileUploadEvent event) throws Exception {
  return "treeOrderRequestStatus";
}

ただし、これによってリダイレクトが発生することはありません。

また、faces-config.xmlを介してそれを達成しようとしました:

<navigation-rule>
  <from-view-id>/userpages/manualDataLoad.xhtml</from-view-id>
  <navigation-case>
    <from-action>#{manualDataLoader.loadFills}</from-action>
    <to-view-id>/userpages/treeOrderRequestStatus.xhtml</to-view-id>
    <redirect/>
  </navigation-case>
</navigation-rule>

<navigation-rule>
  <from-view-id>/userpages/manualDataLoad.xhtml</from-view-id>
  <navigation-case>
    <from-outcome>treeOrderRequestStatus</from-outcome>
    <to-view-id>/userpages/treeOrderRequestStatus.xhtml</to-view-id>
    <redirect/>
  </navigation-case>
</navigation-rule>

そして、これらはどちらも機能しませんでした。

最後に、uploadcompleteイベントによってトリガーされたリンクを実行してみました。

<rich:fileUpload fileUploadListener="#{manualDataLoader.loadFills}"
    maxFilesQuantity="1" createTempFiles="false" uploadLabel="Import Fill Data"
    addLabel="Select Fill File">
  <a4j:ajax event="uploadcomplete" execute="redirect"/>
</rich:fileUpload>

<h:link id="redirect" outcome="treeOrderRequestStatus"/>

まだサイコロはありません。これらの試みのそれぞれで、宛先ページを指定する複数の異なる組み合わせ(たとえば、ディレクトリを含む.xhtml拡張子を含む...)を試しましたが、まだ成功していません。

私は何が間違っているのですか?

4

1 に答える 1

1

execute 属性タグは、リクエストでサーバーに送信されるコンポーネントを定義するためのものです。タグ コンポーネントuploadcompleteから JavaScript メソッドを使用して、リンク/ボタンをクリックしてみることができます。<rich:fileUpload>

<rich:fileUpload fileUploadListener="#{manualDataLoader.loadFills}"
    maxFilesQuantity="1" createTempFiles="false" uploadLabel="Import Fill Data"
    addLabel="Select Fill File">
  <a4j:ajax event="uploadcomplete" onbegin="document.getElementById('yourFormName:redirect').click();" />
</rich:fileUpload>

<h:commandButton id="redirect" action="treeOrderRequestStatus" style="display: none"
    tabindex="-1" />

また、faces-config.xml 内のこれらのナビゲーション ルールを消去して、ファイルに不要な構成が含まれないようにすることをお勧めします。

于 2012-07-18T19:47:27.663 に答える