我想在JSF中创建一个自定义组件,并且已经创建了它。现在,我想为XHTML文件中使用的该自定义标记创建属性,并将其作为必需属性。我创建了一个从UIOutput类扩展的组件MyJSFComponent。我该如何规定某些属性?
您不是在UIComponent
一侧,而是在.taglib.xml
或TagHandler
一侧。
在.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] 删除。
我来说两句