2010-04-08 76 views
8

在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> 

标签库不包含对组件的属性的任何信息(id,width,height,title)和IDE不能检查我的语法,也不能在我输入时显示属性。

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

回答

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> 

只是为了自动完成的缘故。丑,我知道。

0

我期待着能够创建使用JSF 2和Facelets复合组件;从我读过的内容来看,它看起来非常快速简单,并且可以定义复合组件接受的属性。

0

我不知道之前,但它现在是可能的。只需添加:

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