jsf没有提供一些扩展名的文件

时间:2014-08-21 16:10:19

标签: jquery csv jsf-2

所以我在我的服务器上设置了jsf,它有一些我可以调用的xhtml文件:

http://myserver.com/sms/faces/myfile.xhtml

但我也有一些" .csv"扩展," .js"扩展,一些图像文件和一些文本文件" .txt"扩展,显然是已经提到的一些xhtml文件,在同一目录

正如我所说,上述网址有效,但此网址没有:

http://myserver.com/sms/faces/csvfile.csv

同样,这有效:

http://myserver.com/sms/faces/jsfile.js

所以我看到它能够提供xhtml,js,images但是无法提供csv或txt文件。是否有一些配置不允许JSF提供这些类型的文件。

只是一点背景: 我需要这个的原因是因为我试图使用jquery的get方法加载一些csv文件,但该方法无法找到我的csv文件。如果我将这些文件的扩展名更改为js或xhtml或html,jquery会加载这些资源,我的程序运行正常。但我不喜欢改变扩展名。我希望jsf能够按原样提供我的csv文件。

1 个答案:

答案 0 :(得分:1)

CSV文件不是JSF文件。因此,您应确保CSV文件上的请求网址与<url-pattern>中配置的FacesServlet实例的web.xml不匹配。这样,它们将由servletcontainer的默认servlet提供服务。

另一点是/faces/*路径映射是来自黑暗JSF 1.0时代的遗留物。在那个时代,不可能仅仅将FacesServlet映射到视图文件的扩展名。它会在每次调用自身的无限循环中运行。但是,自从JSF 2.0以来,它很幸运。

因此,您最好的选择是重新配置您的FacesServlet实例:

<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

这样你就完全摆脱了/faces/*虚拟路径,你再也不需要处理虚拟URL了。

如果由于某些不明原因而无法选择,那么您只需要在jQuery端更改CSV网址即../csvfile.csv而不是csvfile.csv

另见: