你能把h:outputLink放在h:commandButton里面吗?

Can you put h:outputLink inside h:commandButton?

我需要一个按钮将用户带回某个页面,为此我在 h:commandButton 中放置了一个 h:outputLink,如下所示:

  <h:commandButton styleClass="richButtonLogout">
   <h:outputLink value="/pages/somePage.xhtml">
 SomePage
</h:outputLink>

我原以为单击该按钮会将我带到指定的页面,但我在浏览器中看到了一个单独的按钮和一个单独的 link。因此,link 在按钮之外。该按钮不会执行任何操作,而 link 正常工作。 类似的方法适用于 html,所以我认为没问题。

不,您不能将 outputLink 放在 commandButton 中。这些是独立的组件,彼此不关联或相互依赖。

如果您希望按钮具有 link 的功能,您可以像这样将 h:button JSF 组件与 outcome 属性结合使用,

<h:button outcome="..."/>

请注意,虽然它确实有效,但 JSF button 组件使用 JavaScript 来实现此导航 - 因此它不是您所期望的普通 link。因为这些是导航结果(不是 links)- 这种方法的一个优点是您可以使用静态结果并在 faces-config.xml.

中动态定义您的导航规则

显然,要实现普通的旧 link,您也可以只使用普通的 <a href="..."> 和适当的按钮样式来实现相同的最终结果。