在taglib中定义的自定义Facelets组件和属性

时间:2010-04-08 06:41:21

标签: jsf components facelets taglib

在Facelets中定义自定义组件既简单又快捷,但有一点我无法弄清楚。

Facelets可以定义我的自定义组件具有哪些属性?即:我创建了一个以这种方式使用的组件:

 <blue:modalWindow id="editFeesWizard" width="500" height="440" title="Wizard">

并在taglib.xml中定义如下:

<!DOCTYPE facelet-taglib PUBLIC
        "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
        "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
    <namespace>...</namespace>
    <tag>
        <tag-name>modalWindow</tag-name>
        <source>components/modalWindow.xhtml</source>
    </tag>    
</facelet-taglib>

Taglib不包含有关组件属性(id,width,height,title)的任何信息,因此IDE不能检查我的语法,也不能在我输入时建议属性。

我在Facelets文档中找不到关于此主题的任何内容。以为你可以帮忙。谢谢!

3 个答案:

答案 0 :(得分:4)

似乎没有办法。但即使有,我也不认为Eclipse(例如)能够处理它并提供自动完成功能。这就是为什么你可以定义.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">
......
</taglib>

只是为了自动完成。我知道,丑陋。

答案 1 :(得分:0)

我期待能够使用JSF 2和facelets创建复合组件;根据我的阅读,它看起来非常快速和简单,您可以定义复合组件接受的属性。

答案 2 :(得分:0)

我以前不知道,但现在有可能。只需添加:

<tag>
    <tag-name>mycustomtag</tag-name>
    <source>tags/mycustomtag.xhtml</source>
    <attribute>
        <description>What does this do?!</description>
        <name>attribute</name>
    </attribute>
</tag>