JSF行动与结果属性

时间:2013-02-22 23:54:06

标签: jsf jsf-2

我是JSF的新手,并试图了解动作与结果属性之间的区别是什么?这不是按钮和命令按钮之间的区别,而是相同按钮标记上的结果与动作属性之间的区别。

例如,我可以:

<h:button value="Go" outcome="<value>" />

<h:button value="Go" action="<value>" />

我不确定何时使用哪一个。此外,如果<value><#{bean.methodThatReturnsStringInNavigationRule}><string literal in navigation rule>,会不会有所作为?

谢谢。

2 个答案:

答案 0 :(得分:11)

区别在于,操作定义了要执行的服务器方法,结果指定了一个view-id,它将成为您网页的目标。您必须根据您尝试实现的目标使用JSF输入:

  • <h:button outcome="user-management">将您定位到用户管理页面。想象一下它就像是一种联系。
  • <h:commandButton action="#{backingBean.goToUserManagement}"如果您在操作方法中返回“用户管理”,则与结果的操作相同,但它允许您执行某些逻辑进入服务器端。它必须嵌入h:form标记。

此外,<h:button outcome="user-management"><h:button outcome="#{backingBean.userManagementNavigationResult}">之间没有区别,只要您的服务器端getter方法返回“用户管理”值。

答案 1 :(得分:3)

如果您看到JSF 2.0 API,则action标记没有<h:button>属性。 <h:button>是JSF 2.0中的新标记。您可以直接在outcome属性中声明导航结果,无需调用bean来返回<h:commandButton>之类的结果。

但是,如果浏览器禁用了JavaScript,则导航将失败,因为“h:button”标记会生成“onclick”事件以通过window.location.href处理导航。

<h:button value="buton" outcome="login" />          

// HTML输出

<input type="button" 
       onclick="window.location.href='/ContextRoot/faces/login.xhtml; return false;" 
       value="buton" />

来源:mkyong。我最喜欢的网站,你可以找到合适的例子。

JSF优秀博客:BalusC。在这个论坛上有这么多人的英雄:)。