JSF隐式与显式导航

时间:2013-08-03 22:23:40

标签: jsf-2

我正在考虑在我的网络应用中使用显式页面导航规则this如此问题/回答,以下摘录自

  

...由于新的“隐式导航”功能,导航规则已经过时,因为JSF 2.0。

但是,我已经浏览了CoreServlets JSF 2.0 tutorial的大部分内容,并且它有一个专门用于显式页面导航的部分,并且它对此有利。要么这违背了上述建议,要么我误解了一些东西。

我不想以过时的方式创建新的Web应用程序。任何人都可以放弃任何光明吗?

3 个答案:

答案 0 :(得分:12)

这有些主观,但是,它归结为以下几点:

  1. XML中的导航规则是维护地狱。

  2. 使用导航规则表明有问题的网络应用程序遭遇“一个网址落后”问题,导致糟糕的用户体验(网页无法收藏)。

  3. 使用导航规则表明有问题的Web应用程序正在使用POST进行页面到页面导航,这不仅会导致糟糕的用户体验(页面不可收藏),还会导致糟糕的SEO(机器人不会索引) POST,因此公共搜索引擎无法访问POST导航的页面。)

  4. 另见:

答案 1 :(得分:7)

从纯粹的技术角度来看,导航规则并不过时,因为规范或任何API都没有将它们标记为过时,弃用或被修剪的候选者。

事实上,他们已经在JSF 2.2中进行了一些复兴,其中Faces Flow功能可用于可重复使用的模块。

在实践中说过,当没有使用Faces Flow功能时,我从来没有看到过很多用于XML的导航规则。从理论上讲,它们可以使维护变得更容易(IIRC是他们最初的设计目标之一),但在实践中,BalusC提到它只会导致维护地狱。

但正如BalusC也提到的那样,这是主观的。有些人实际上仍然喜欢主要定义托管bean,注入(布线),实体映射以及XML中的内容而不是注释(并且只使用XML作为可能的覆盖或全局内容)。

在我看来,导航规则主要反映了JSF从HTTP抽象过多的初步尝试,并提出了更高级别的类似桌面的编程模型。在该模型中,重定向到具有查询参数的URL,并且所有这些都没有真正的位置。一段时间以来(从JSF 2.0开始)JSF已经进入了一个更加中间的模型,其中普通的GET请求和PRG(Post-Redirect-GET)更加受欢迎。按照这个新模型,您确实可以说导航规则没有位置,即实际上是过时的。

答案 2 :(得分:0)

您可以使用其中之一。

xml代码中的显式含义,导致:

  1. 更多开销,特别是条件复杂时(必须将action方法的结果与期望值匹配)。

    1b)如果存在拼写错误,隐式导航可能会导致404.明确将导致错误的页面。

  2. 您可以使用工具在GUI中绘制规则,以后生成faces-config.xml

  3. 在后一次,更改规则意味着更改XML(您不需要重新编译)。如果更改URL / JSF页面名称,则无需重新编译。

  4. 我想说使用其中一个是优先考虑的问题,我很乐意使用隐式导航。