我是JSF的新手,正在努力理解动作属性和结果属性之间的区别是什么?这不是按钮和命令按钮之间的区别,而是相同按钮标签上的结果与操作属性之间的区别。
例如,我可以有:
<h:button value="Go" outcome="<value>" />
或
<h:button value="Go" action="<value>" />
我不知道什么时候该用哪一个。此外,如果<value>
是<#{bean.methodThatReturnsStringInNavigationRule}>
还是<string literal in navigation rule>
,会有区别吗?
谢谢。
不同之处在于,操作定义了要执行的服务器方法,而结果指定了一个视图id,该id将成为页面的目标。您必须使用JSF输入,这取决于您试图实现的目标:
<h:button outcome="user-management">
将您定位到用户管理页面。把它想象成一种链接<h:commandButton action="#{backingBean.goToUserManagement}"
如果您在操作方法中返回"用户管理",则执行与结果相同的操作,但它允许您在服务器端执行一些逻辑。它必须嵌入到h:form
标记中
此外,就服务器端getter方法返回"用户管理"值而言,<h:button outcome="user-management">
和<h:button outcome="#{backingBean.userManagementNavigationResult}">
之间没有区别。
如果看到JSF2.0 API,则<h:button>
标记没有action
属性。<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。这个论坛上很多人心目中的英雄:)。