所以我在我的服务器上设置了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文件。
答案 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
。