我试着让共济会者在谷歌应用引擎下工作。我已经获得了简单的ftl模板文件,当直接请求时工作,但是如果可用的话,我想让index.ftl工作,index.html -或者反之亦然。
/index.html
,它以HTML的形式呈现,而/index.ftl
,则呈现为FreeMarker模板。但是,如果我请求'/‘,它会给出以下404个消息:访问/index.html/index.ftl.的问题
我的web.xml文件中有以下内容:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.ftl</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>file://ftl</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
</web-app>
在Eclipse应用程序的war/
目录中有以下内容:
如果我切换index.ftl和index.html条目的顺序,请求/提供以下404消息:
Problem accessing /index.ftl/index.ftl.
谢谢你的帮助。
还有一点信息是,如果我有一个<welcome-file>
条目的index.html
,它可以正常工作。当我添加index.ftl
时,按任何顺序,都是当我得到错误时。
谢谢你的帮助。
发布于 2010-11-08 16:42:49
我认为这里的问题非常相似--使用struts action as a welcome page.引用Damien的答案的问题
没有其他更好的方法(除了使用jsp重定向)。Servlet规范(例如Java规范2.4、"SRV.9.10欢迎文件“)声明如下:
此机制的目的是允许部署人员为容器指定一个有序的部分URI列表,以便在对URI的请求与未映射到Web组件的WAR中的目录项相对应时,用于附加到URI。
因为它被映射到目录条目,而不是映射的web组件,所以当index.ftl是受欢迎的文件时,"/“不会转发给共济会servlet。
我建议尝试同样的方法,使行动成为一个受欢迎的页面。这是有一个jsp fwd到您的index.ftl。
发布于 2010-11-09 05:25:04
我仍然在寻找解决这一问题的方法(尽管@ answer的答案最终可能是正确的),但我想我会注意到我为解决这个问题做了些什么。
最后,我将我所有的html文件移到FreeMarker视图层次结构中,以便所有的HTML和FreeMarker文件都由FreeMarker servlet处理。我不需要支持*.ftl
文件,因为我永远不会直接呈现它们。因此,我在静态层次结构中仅有的文件是图像之类的。
虽然我不得不子类FreemarkerServlet来阻止在请求中所做的getSession()方法,但这似乎运行得很好,因为我的应用程序没有启用会话。这是我的web.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>file://views</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
https://stackoverflow.com/questions/4127610
复制