重定向到第二台服务器没有使用它&faces-config

时间:2016-01-08 23:40:59

标签: jsf-2.2

我希望将我的所有网站图像存储在辅助文件服务器上,以减少数据库和主服务器的工作负载(最终会有大量的图像文件,浏览器会发出完全独立的请求加载图像,所以我想我也可能有一个单独的文件服务器)。

我有一个标准链接可以将用户转发到文件服务器,以允许他们上传产品的图片文件,但似乎没有使用文件服务器的faces-config文件。

在主服务器上的JSF页面中:

<a target="_blank" href="http://localhost:12631/FileServer/faces/ExternalSecure/ForwardUploadImagesProcessing.xhtml#{newEditProductBean.uploadPicviewfParamValues}" >Upload replacement image(s) for storage on #{authBackingBean.demoCompany}'s servers</a>

转发页面&#39; ForwardUploadImagesProcessing.xhtml&#39;在文件服务器上如下:

        <?xml version='1.0' encoding='UTF-8' ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml"
              xmlns:f="http://java.sun.com/jsf/core">

            <head>
                <title>redirect</title>
            </head>
            <body>
                <f:metadata>
                    <f:viewParam name="path" value="#{uploadImages.path}" />
                    <f:viewParam name="filename" value="#{uploadImages.fileName}" />
                    <f:viewParam name="productTypeName" value="#{uploadImages.productTypeName}" />
                    <f:viewParam name="productModel" value="#{uploadImages.productModel}" />

                    <f:event type="preRenderView" listener="#{uploadImages.processUploadEntityImages()}" />
                </f:metadata>        
            </body>
        </html>

&#39; processUploadEntityImages()&#39;上传图像中的方法&#39;按预期调用backing bean(见下文),System.out语句正确打印所有传递的f:viewParam值,但是JSF导航字符串&#39; process_UploadImages&#39;不会加载它指向文件服务器上的页面。如何强制它切换到文件服务器,它是face-config?

在&#39; UploadImages&#39;在文件服务器上支持bean:

public String processUploadEntityImages()
{
    System.out.println("processUploadEntityImages() " + path + " ; " + fileName + " ; " + productTypeName + " ; " + productModel);

     return "process_UploadImages";
 }

在&#39; faces-config&#39;文件服务器:

 <navigation-rule>
    <navigation-case>
        <from-outcome>process_UploadImages</from-outcome>
        <to-view-id>/ExternalSecure/UploadImages.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
<managed-bean>
    <description>For uploading thumb and main images for entities. </description>
    <managed-bean-name>uploadImages</managed-bean-name>
    <managed-bean-class>processing.UploadImages</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

在文件服务器上的web.xml中:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

我在文件服务器的索引页面上有一个链接到此页面的链接,以及&#39; UploadImages.xhtml&#39;使用&#39; process_UploadImages&#39;正确打开页面导航规则,所以那里没有问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我应该知道这一点;我以前用它来从电子邮件中的链接重定向到JSF页面....

processUploadEntityImages()应如下所示:

public void processUploadEntityImages()
{
    System.out.println("processUploadEntityImages() " + path + " ; " + fileName + " ; " + productTypeName + " ; " + productModel);

    FacesContext facesContext = FacesContext.getCurrentInstance();
    NavigationHandler navigationHandler = facesContext.getApplication().getNavigationHandler();
    navigationHandler.handleNavigation(facesContext, null, "process_UploadImages");
}