如何从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
相关产品推荐
相关产品推荐

