6

我是 JSF 的新手,我想了解操作与结果属性之间的区别是什么?这不是按钮和命令按钮之间的区别,而是同一按钮标签上的结果与操作属性之间的区别。

例如,我可以拥有:

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

或者

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

我不确定何时使用哪一个。另外,<value>is<#{bean.methodThatReturnsStringInNavigationRule}>或有区别<string literal in navigation rule>吗?

谢谢你。

4

2 回答 2

14

不同之处在于,虽然action定义了要执行的服务器方法,但结果指定了一个 view-id,它将成为您页面的目标。您必须根据您要实现的目标使用 JSF 输入:

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

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

于 2013-02-23T00:40:01.380 回答
4

如果您看到 JSF 2.0 API,则标签没有action属性。是 JSF 2.0 中的一个新标签。您可以直接在属性中声明导航结果,无需调用 bean 来返回类似.<h:button><h:button>outcome<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。这个论坛上这么多人的英雄:)。

于 2013-02-23T00:15:33.460 回答