You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Java代码动态创建<h:button>组件?

解决JSF中通过Java代码创建<h:button>组件的问题

嘿,这个问题我之前也踩过坑!<h:button>对应的Java类其实是javax.faces.component.html.HtmlOutcomeTargetButton,它就是专门用来实现和<h:button outcome="test.xhtml" />完全等价的组件的。

具体实现代码

直接实例化这个类,然后设置对应的属性就可以了:

// 创建<h:button>对应的Java组件实例
HtmlOutcomeTargetButton button = new HtmlOutcomeTargetButton();

// 设置跳转目标,对应标签里的outcome属性
button.setOutcome("test.xhtml");

// 可选:设置按钮显示的文本
button.setValue("点击跳转到Test页面");

// 可选:添加其他属性,比如样式类
button.setStyleClass("custom-button");

为什么是这个类?

你之前用的HtmlCommandButton对应<h:commandButton>,它是用来触发POST请求、调用后端Bean方法的;而<h:button>本质是生成一个GET请求的跳转按钮,属于JSF里的「outcome target组件」,所以它的实现类是HtmlOutcomeTargetButton,命名上也体现了它的作用——基于outcome跳转目标页面。

只要你使用的是JSF 2.0及以上版本,这个类就是标准API的一部分,确保你的项目依赖里包含了JSF的API和实现(比如Mojarra或者MyFaces)就能正常使用。

内容的提问来源于stack exchange,提问作者Uta Alexandru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:19:05