2012-07-18 29 views
1

我想在單個文件上傳後重定向到另一個頁面。源xhtml和目標xhtml位於相同的目錄中。我已經嘗試在fileUploadListenerMethod中返回一個字符串:上傳完成後,Richfaces 4 fileUpload重定向

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

我在做什麼錯?

+0

'execute'屬性標記用於定義將請求發送到服務器的組件。你現在可以嘗試類似'' – 2012-07-18 15:18:23

+0

@LuiggiMendoza - 感謝您的建議,不幸的是,這也沒有奏效。它似乎刷新頁面,但它不會導航到其他頁面(我嘗試了很多指定其他頁面的組合)。 – 2012-07-18 15:41:24

+0

嘗試改變它爲''(但這不是一個好的解決方案,但它可以工作)。 – 2012-07-18 15:54:47

回答

1

execute屬性標記用於定義將請求發送到服務器的組件。你可以嘗試一下從<rich:fileUpload>標籤組件使用uploadcomplete 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中抹去那些導航規則倒不如保持文件的清潔無用的配置。

+0

「結果」屬性對我不起作用。我必須使用'action =「#{manualDataLoader.redirect}」''然後以這種方式返回頁面。 – 2012-07-18 20:01:01

+0

對不起,我通過複製/粘貼犯了一個錯誤。我用正確的代碼更新了帖子。 – 2012-07-18 20:06:50

+0

不用擔心,謝謝你的幫助! – 2012-07-18 20:13:40