jsf自定义组件声明强制属性

用户名

我想在JSF中创建一个自定义组件,并且已经创建了它。现在,我想为XHTML文件中使用的该自定义标记创建属性,并将其作为必需属性。我创建了一个从UIOutput类扩展的组件MyJSFComponent。我该如何规定某些属性?

BalusC

您不是在UIComponent一侧,而是在.taglib.xmlTagHandler一侧。

.taglib.xml文件中,您只需将一个<required>true</required>条目添加到属性即可。

<attribute>
    <name>foo</name>
    <required>true</required>
    <type>java.lang.String</type>
</attribute>

但是,您是否依赖工具(编辑器)是否会导致错误。JSF / Facelets即不会在运行时检查它。例如,当在编辑器中自动完成标记时,Eclipse将自动内联该属性,但是可以在以后将其删除,并且该标记将在运行时没有错误。

一种更可靠的执行方法是使用一个ComponentHandler类,该类提供缺少getRequiredAttribute()方法时将抛出方法TagException然后,您可以在.taglib.xml文件中注册此处理程序,如下所示:

<component>
    <component-type>com.example.SomeComponent</component-type>
    <handler-class>com.example.SomeComponentHandler</handler-class>
</component>

由此,处理程序类基本上如下所示:

public class SomeComponentHandler extends ComponentHandler {

    public SomeComponentHandler(ComponentConfig config) {
        super(config);
        getRequiredAttribute("foo");
    }

}

这会对属性的存在进行真正的运行时检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章