我是JSF的新手,并试图了解动作与结果属性之间的区别是什么?这不是按钮和命令按钮之间的区别,而是相同按钮标记上的结果与动作属性之间的区别。
例如,我可以:
<h:button value="Go" outcome="<value>" />
或
<h:button value="Go" action="<value>" />
我不确定何时使用哪一个。此外,如果<value>
为<#{bean.methodThatReturnsStringInNavigationRule}>
或<string literal in navigation rule>
,会不会有所作为?
谢谢。
答案 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。在这个论坛上有这么多人的英雄:)。