自定义Facelets组件和在标签库中定义的属性

8
在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个回答

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
我不知道以前是否可以,但现在是可能的。只需添加:
<tag>
    <tag-name>mycustomtag</tag-name>
    <source>tags/mycustomtag.xhtml</source>
    <attribute>
        <description>What does this do?!</description>
        <name>attribute</name>
    </attribute>
</tag>

0

我期待着能够使用JSF 2和facelets创建组合组件;根据我所读的,这似乎非常快速和简单,并且您可以定义您的组合组件接受哪些属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接