按行动导航的差异=" xyz"和action ="#{bean.returnXyz}"

时间:2013-04-10 07:39:55

标签: jsf-2 navigation facelets

如何从Facelet页面导航

<p:commandLink action="xyz.xhtml">

或支持bean

<p:commandLink action="#{bean.redirect}">
public class Bean{
   public String redirect(){
       .....
       return "xyz.xhtml";
   }
 }

彼此不同?

2 个答案:

答案 0 :(得分:1)

查看p:commandLink here的文档,其中说明action属性的以下内容:

  

当命令出现时要处理的方法表达式或字符串结果   执行。

现在,当action="xyz.xhtml"返回String xyz.xhtml时,您将被重定向,而action="#{bean.redirect}"再次返回xyz.xhtml,您将再次根据返回的String重定向。

答案 1 :(得分:1)

  

如何从xhtml页面或辅助bean导航彼此不同。

没有区别。这两个示例都调用POST请求并指示JSF呈现与给定结果关联的视图。支持bean方法的唯一优势是它允许您事先执行某些业务逻辑,甚至可以以编程方式控制结果值。

但是,如果您根本没有任何业务逻辑并且只想拥有指向另一个页面的幂等链接,那么使用命令链接实际上是一种不好的做法。使用POST进行页面到页面导航不是用户也不是SEO友好。目标页面不可收藏(URL仍然是提交POST表单的页面之一),也不是searchbot-crawlable(它使用JavaScript提交隐藏表单)。

您应该使用普通链接。

<h:link outcome="xyz.xhtml">

这会生成一个SEO友好的<a>元素,其href中包含完整的网址,最终会显示在用户友好的可收藏的网址中。

另见: