在JavaServer Faces中导航,使用正确的参数重定向

我有一个页面: http : //mypage.com/items.jsf 。

此页面理所当然地认为如下:

  • ID由GET设置或ID由POST设置。

现在,我可以手动调用items.jsf?ID = 10

但我真正想做的是有一个Button,它调用一个返回导航URL的函数。

public String test() { return "10"; } 

现在在JSF文件中有以下代码。

     

我想要发生的是,当我按下“重定向我”时,我想要一个导航规则知道我想去:items.jsf?ID = 10

这可能吗? 感觉这真的是一个微不足道的问题。

只有核心JSF框架和Facelets库,您可能会发现这很困难。 JSF 1.2库不包括对重定向URL添加请求参数的支持。

我想到了一些解决方案:

  • 只需重定向,如此处所述。
  • 添加您自己的自定义NavigationHandler和/或ViewHandler代码。 一些第三方框架已经迎合了这类事情。 例如, Seam添加了一个允许导航规则中的参数的pages.xml 。
  • 升级到JSF2 。 它增加了对导航期间处理参数的支持(并将Facelets标准化为核心API的一部分,其中包括此处的规范 )。 它是发布候选人2 ,可能适合也可能不适合。

如果你坚持使用JSF1.2,你也可以使用并在其中嵌套标签。 outputLink将参数作为query-params:?name = value

如果您需要页面操作,方法导航或者jsut想让扩展程序为您管理,您可以使用PrettyFaces – SEO,动态参数,书签和JSF / JSF2导航

它包括大大简化的JSF导航和链接。