Jsf 2.2 Omnifaces无扩展URL和h:link

Jsf 2.2 Omnifaces无扩展URL和h:link,jsf-2.2,omnifaces,Jsf 2.2,Omnifaces,默认情况下,由ViewHandler.getActionURL(FacesContext,String)生成的所有URL由其他人使用 <h:form>, <h:link>, <h:button> , 所有扩展标记也将是无扩展的 我尝试通过将Facelets源文件放入/WEB-INF/faces views目录来使用它 我在浏览器中键入了/context/entries,然后在/WEB-INF/faces views/entries.xhtml中获得了页面

默认情况下,由ViewHandler.getActionURL(FacesContext,String)生成的所有URL由其他人使用

<h:form>, <h:link>, <h:button> 
所有扩展标记也将是无扩展的

我尝试通过将Facelets源文件放入/WEB-INF/faces views目录来使用它

我在浏览器中键入了/context/entries,然后在/WEB-INF/faces views/entries.xhtml中获得了页面。但当我在facelet页面中使用此选项时:

<h:link outcome="entries">Entries</h:link>
条目
生成的url为/context/WEB-INF/faces views/entries.xhtml,这不是理想的结果。出了什么问题


我正在使用Mojara 2.2.12和Omnifaces 2.6.9,我的faces servlet映射为*.jsf。

BalusC是正确的,切换到2.6.8版解决了这个问题。巴卢斯一如既往地获得了荣誉,但他有太多的荣誉,所以我想他不会介意我自己发布了答案,只是不想打扰他

将servlet映射更改为*.xhtml也可以解决这个问题。恕我直言,极限摩托车手:虫子就是虫子。即使我将映射更改为*.abc,也不会有问题。

在2.7-SNAPSHOT中修复了2.6.9版本中的FacesView。在将FacesView添加到名为
/foo.bar/baz
的带有句点的文件夹时,我意外地将部分修复提交到了3.x中,而不是2.x中。这就解释了为什么它在3.1中工作得很好,正如showcase所示。我的错误,这再一次证明了我是人类而不是机器

有几种方法可以解决这个问题:

  • 降级至2.6.8
  • 或者,迁移到3.1
  • 或者,保留2.6.9并使用单个
    web.xml
    上下文参数的方法,而不是在
    /web-INF/faces视图中放置文件的“零配置”方法

  • 为什么使用
    *.jsf
    后缀作为servlet映射?这与旧的JSF1.x风格有关。改为切换到
    *。xhtml
    。更改为2.6.8可解决此问题。请参阅下面我的答案。我已将我的评论转换为答案。我最初将我的“答案”作为评论发布,因为我不确定这是否是正确的答案。