如何用Mojarra依赖替代MyFaces的RendererUtils获取组件值?
替代方案
当从MyFaces切换到Mojarra(JSF 2.3)时,原MyFaces的RendererUtils.getStringValue可以通过以下两种方式替代:
方式一:使用Mojarra原生工具类
Mojarra提供了对应的工具类com.sun.faces.renderkit.RenderKitUtils,其getStringValue方法功能与MyFaces的实现一致:
RenderKitUtils.getStringValue(FacesContext.getCurrentInstance(), component);
注意需要确保项目中引入了Mojarra的实现依赖(即你提供的com.sun.faces:jsf-impl),该类属于Mojarra的内部实现类。
方式二:使用标准JSF API(推荐)
如果希望代码不依赖特定厂商实现,可使用标准JSF API的Renderer类来获取转换后的值:
FacesContext context = FacesContext.getCurrentInstance(); Renderer renderer = context.getRenderKit().getRenderer(component.getFamily(), component.getRendererType()); String value = (String) renderer.getConvertedValue(context, component, component.getSubmittedValue());
这种方式完全基于javax.faces-api标准接口,具备更好的跨厂商兼容性。
内容的提问来源于stack exchange,提问作者Pascal Petruch
相关产品推荐
相关产品推荐

