在uploadcomplete之后Richfaces 4 fileUpload重定向

时间:2012-07-18 15:01:06

标签: jsf richfaces seam

我想在上传单个文件后重定向到另一个页面。源xhtml和目标xhtml位于同一目录中。我试过在fileUploadListenerMethod中返回一个String:

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扩展名,包括目录,......)但尚未成功。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

execute属性标记用于定义将在请求中发送到服务器的组件。您可以尝试使用uploadcomplete代码组件中的<rich:fileUpload> JavaScript方法点击链接/按钮:

<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中删除这些导航规则以保持文件清洁不必要的配置会更好。