JSF 为组件声明定义自定义命名空间

Posted

技术标签:

【中文标题】JSF 为组件声明定义自定义命名空间【英文标题】:JSF define custom namespace for component declaration 【发布时间】:2011-03-31 11:29:06 【问题描述】:

当您在 JSF 页面中使用来自外部库(或自定义组件)的组件时,您添加 xmlns 声明,例如:

xmlns:util="http://java.sun.com/jsf/composite/component/util

我想知道如何在 Namaspace 中使用私有地址,如下所示:

xmlns:p="http://primefaces.prime.com.tr/ui"

这和包有关吗?还是取决于包含组件的 .JAR 的名称?

谢谢!

【问题讨论】:

【参考方案1】:

对于 Facelets,这是在 .taglib.xml 文件中定义的。对于 PrimeFaces,它是 /META-INF/primefaces-p.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://primefaces.prime.com.tr/ui</namespace>
    ...

注意&lt;namespace&gt;。对于 JSP,这是在 .tld 文件中定义的,对于 PrimeFaces,它是 /META-INF/primefaces-p.tld

<?xml version="1.0" encoding="UTF-8"?>
<taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
    <tlib-version>1.2</tlib-version>
    <short-name>p</short-name>
    <uri>http://primefaces.prime.com.tr/ui</uri>
    ...

注意&lt;uri&gt;

【讨论】:

我的项目中没有 /META-INF/primefaces-p.taglib.xml 这样的文件,但我使用的是 Primefaces?

以上是关于JSF 为组件声明定义自定义命名空间的主要内容,如果未能解决你的问题,请参考以下文章

在导出函数的命名空间中使用自定义类型

带有自定义类型的角度单元测试给出了找不到命名空间

C ++在boost python中使用带有命名空间的自定义智能指针

为 Qt 注册自定义类型时,何时、何地以及为何使用命名空间

Excel 到 XML 命名空间前缀自定义

C#中如何获得指定命名空间中所有自定义类的信息