Пользовательские компоненты и атрибуты 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 ответов
Кажется, что нет способа. Но даже если бы это было, я не думаю, что 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>
просто ради автозаполнения. Уродина, я знаю.
Я с нетерпением жду возможности создавать составные компоненты с помощью JSF 2 и facelets; из того, что я прочитал, это кажется очень быстрым и легким, и вы определяете, какие атрибуты принимает ваш составной компонент.
Я не знаю о раньше, но теперь это возможно. Просто добавьте:
<tag>
<tag-name>mycustomtag</tag-name>
<source>tags/mycustomtag.xhtml</source>
<attribute>
<description>What does this do?!</description>
<name>attribute</name>
</attribute>
</tag>