gpt4 book ai didi

jsf - JSF 中的自定义 Facelet 组件

转载 作者:行者123 更新时间:2023-12-04 21:53:10 26 4
gpt4 key购买 nike

是否可以创建自定义 JSF 核心 Facelet 组件。类似 <custom:composition><ui:composition> , 或 <custom:include><ui:include>如果有人能告诉我所涉及的步骤会很有帮助。

提前致谢,

考沙尔

最佳答案

它本质上是标签处理程序。 IE。从 TagHandler 扩展的类.
这是一个 Hello World 标记处理程序。com.example.HelloTagHandler

public class HelloTagHandler extends TagHandler {

public HelloTagHandler(TagConfig config) {
super(config);
}

@Override
public void apply(FaceletContext context, UIComponent parent) throws IOException {
// Do your job here. This example dynamically adds another component to the parent.
if (ComponentHandler.isNew(parent)) {
UIOutput child = new HtmlOutputText();
child.setValue("Hello World");
parent.getChildren().add(child);
}

nextHandler.apply(context, parent); // Delegate job further to first next tag in tree hierarchy.
}

}
/WEB-INF/my.taglib.xml
<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
version="2.0"
>
<namespace>http://example.com/my</namespace>
<tag>
<tag-name>hello</tag-name>
<handler-class>com.example.HelloTagHandler</handler-class>
</tag>
</facelet-taglib>
/WEB-INF/web.xml (注意:当 my.taglib.xml 位于 /META-INF 内 JAR 文件的 /WEB-INF/lib 文件夹中时,这部分不是强制性的,就像 JSF 组件库一样):
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/my.taglib.xml</param-value>
</context-param>
/some.xhtml 中的用法
<html ... xmlns:my="http://example.com/my">
...
<my:hello />
查看 <ui:composition> 的Mojarra实现源代码和 <ui:include> ,点击链接。
也可以看看:
  • When to use <ui:include>, tag files, composite components and/or custom components?
  • 关于jsf - JSF 中的自定义 Facelet 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006955/

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