我想在上传单个文件后重定向到另一个页面。源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扩展名,包括目录,......)但尚未成功。
我做错了什么?
答案 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中删除这些导航规则以保持文件清洁不必要的配置会更好。