我想在JSF中创建一个自定义组件,并已经创建了它。现在我想为在XHTML文件中使用的自定义标签创建属性,并将它们设为强制性。
我已经创建了一个扩展自UIOutput类的组件MyJSFComponent。如何使某些属性成为强制性的呢?
我想在JSF中创建一个自定义组件,并已经创建了它。现在我想为在XHTML文件中使用的自定义标签创建属性,并将它们设为强制性。
我已经创建了一个扩展自UIOutput类的组件MyJSFComponent。如何使某些属性成为强制性的呢?
<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");
}
}