我希望将我的所有网站图像存储在辅助文件服务器上,以减少数据库和主服务器的工作负载(最终会有大量的图像文件,浏览器会发出完全独立的请求加载图像,所以我想我也可能有一个单独的文件服务器)。
我有一个标准链接可以将用户转发到文件服务器,以允许他们上传产品的图片文件,但似乎没有使用文件服务器的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;正确打开页面导航规则,所以那里没有问题。
提前致谢。
答案 0 :(得分:0)
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");
}