gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:36:27 25 4
gpt4 key购买 nike

我想在 JSF 中创建一个自定义组件并且已经创建了它。现在我想为我在 XHTML 文件中使用的自定义标签创建属性并将它们设为强制性。我创建了一个从 UIOutput 类扩展的组件 MyJSFComponent。我如何强制执行某些属性?

最佳答案

您不会在 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() 的类(class)会抛出 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");
}

}

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

关于jsf自定义组件声明强制属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21179134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com