【问题标题】:JSF with ExtensionlessURLs / Omnifaces带有 ExtensionlessURLs / Omnifaces 的 JSF
【发布时间】:2021-03-17 06:42:33
【问题描述】:

我正在尝试在我的 JSF 应用程序中使用 ExtensionlessURLs...

我已经在使用:https://showcase.omnifaces.org/facesviews/ExtensionlessURLs 这很好用,但如果我有一个带有参数的 URL,它仍然是:

mypage.jsf?myparameter=12345

是否有可能在这里也排除 .jsf,所以 URL 将是:

mypage?myparameter=12345

我也知道 Prettyfaces 是可用的,但在这里我想我必须为每个 JSF 页面定义一个映射?因此我使用的是 Omnifaces...

有什么可以帮忙的吗?

【问题讨论】:

  • 例如喜欢:ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); String id = employee.getId(); ec.redirect(ec.getRequestContextPath() + "/portal/employeeEdit.jsf" + "?id=" + id);
  • 是的,它被重定向到 /portal/employeeEdit.jsf?id=1234 但我想要:/portal/employeeEdit?id=1234 (=without "jsf").. without参数它可以在 Omnifaces 上正常工作...

标签: jsf omnifaces


【解决方案1】:

您有一个现有的 JSF 应用程序,其 FacesServlet 映射到 *.jsf 而不是 *.xhtml,并且正在尝试使用其默认的“最小”配置通过 OmniFaces FacesViews 启用无扩展 URL。

如果不对现有的 JSF 应用程序进行其他更改,这确实是行不通的。

FacesViews 期望您已经将 FacesServlet 映射到 *.xhtml 的 URL 模式,即自 JSF 2.0 以来的 recommended。所以需要做如下调整:

  1. web.xml 中的FacesServlet 映射从*.jsf 更改为*.xhtml
  2. 在整个源代码中查找所有出现的.jsf 并将其替换为.xhtml。所以例如
    ec.redirect(ec.getRequestContextPath() + "/portal/employeeEdit.jsf" + "?id=" + id);
    
    必须成为
    ec.redirect(ec.getRequestContextPath() + "/portal/employeeEdit.xhtml" + "?id=" + id);
    
    稍微不错的 IDE 只需单击几下即可完成此操作(例如 Eclipse Ctrl+H文件搜索、在 中找到 .jsf封闭项目并替换为.xhtml)。

或者,等待 OmniFaces 2.7.11 或 3.11 或 4.0-M8 发布。我今天根据issue 623 在这些版本中修复了这个向后兼容性问题。通过此修复,现有的 *.jsf URL 将正确地自动 301 重定向到无扩展名的 URL。

请注意,此问题与带参数的 URL 无关。没有参数的 URL 也会发生这种情况。

【讨论】:

  • 感谢 BalusC....我目前在我的 web.xml 中:<!-- Map following files to the JSF servlet --> <servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-pattern>*.jsf</url-pattern> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>
  • 您还需要执行 #2。我已经编辑了答案以详细说明。
  • 旁注:恭喜达到 1M 代表(对此答案表示赞成)!感谢您的所有贡献,它们不止一次地帮助了我。
  • @VonC:谢谢 :) 我可以对您与 Git 相关的贡献说同样的话!
猜你喜欢
  • 2017-12-02
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 2013-01-09
  • 2013-11-30
相关资源
最近更新 更多