2009-09-17 59 views
3

我正在尝试一个简单的URL重写示例,但它不适用于我。我使用部署到JBoss 5.1.0的Seam 2.2.0。Seam 2.2.0 URL重写不起作用

我pages.xml中包含:

<page view-id="/html/index.xhtml"> 
    <rewrite pattern="/home" /> 
</page> 

<page view-id="/html/common/redirect.xhtml" action="#{redirectAction.redirect}"> 
    <rewrite pattern="/link" /> 
    ... 

我components.xml中包含:

<web:rewrite-filter view-mapping="*.seam"/> 

据我可以从告诉文档,这是守我只需要。但是,没有一个内部链接显示不同,并且如果输入URL:http://mysite/home或mysite/link?param = something,我只会得到一个404页面。我错过了什么?

回答

0

当我试图从Tuckey Rewrite Filter移动到Seam时,我遇到了同样的问题。经过一些试验和错误后,我终于注意到,我有一个page.xml的视图我,但在主pages.xml中添加模式。前者似乎覆盖后者。

0

从接缝文档:

“该视图映射参数必须在web.xml文件中的面孔的Servlet定义的servlet映射匹配如果省略,重写滤波器假定图案* .seam”。

0

我不知道为什么你的方法不起作用。但不要忘记,您可以使用viewName.page.xml文件来达到同样的目的。
例如,由于您的页面名称为index.xhtml,因此您必须在包含index.xhtml文件的相同文件夹(您的情况在html文件夹内)中创建index.page.xml文件。

index.page.xml文件中加入此项。

<rewrite pattern="/home" /> 

因为你已经做你component.xml文件应包含行

<web:rewrite-filter view-mapping="*.seam"/> 

部署再次,它应该工作。

+0

感谢您的答复,尽管三年后,我甚至无法访问该项目来测试您的理论。 IIRC,我确实解决了这个问题,这是由于我的XML文件在生成过程中被覆盖了。我记得在这里指出了一个正确的方向,我接受了它。现在两人都走了,我不知道那是怎么发生的。 – 2012-12-02 20:14:13