~~ Licensed to the Apache Software Foundation (ASF) under one or more | |
~~ contributor license agreements. See the NOTICE file distributed with | |
~~ this work for additional information regarding copyright ownership. | |
~~ The ASF licenses this file to You under the Apache License, Version 2.0 | |
~~ (the "License"); you may not use this file except in compliance with | |
~~ the License. You may obtain a copy of the License at | |
~~ | |
~~ http://www.apache.org/licenses/LICENSE-2.0 | |
~~ | |
~~ Unless required by applicable law or agreed to in writing, software | |
~~ distributed under the License is distributed on an "AS IS" BASIS, | |
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
~~ See the License for the specific language governing permissions and | |
~~ limitations under the License. | |
------ | |
Creating Custom JSF Tags | |
------ | |
Creating Custom JSF Tags | |
A JSF Tag needs the following elements: | |
* JSP Tag class. | |
* Tag entry on tld. | |
* Facelets Tag Handler class (optional). | |
* Tag entry on facelets taglib (optional). | |
Myfaces builder plugin provide annotations/doclets to help users maintain | |
configuration files. In this way, all information for a tag is just in | |
one file. | |
Any tag is registered on facelets taglib if it has a related tag handler. | |
Usually, custom tag classes should have facelets tag handlers with | |
similar functions, but on facelets world there is no need to define | |
properties on a xml file. | |
Setting up your project | |
All information related can be found {{{setup.html}here}}. | |
Configuration files (faces-config.xml, .tld, facelets taglib) | |
This {{{config-files.html}page}} shows some examples. | |
Annotate JSF Tag Classes | |
Just add the annotations/doclets as presented below: | |
------------------- | |
@JSFJspTag( | |
name = "f:valueChangeListener", | |
bodyContent = "empty") | |
public class ValueChangeListenerTag extends | |
GenericListenerTag<EditableValueHolder, ValueChangeListener> | |
{ | |
/** ............. some code goes here ................. **/ | |
@Override | |
@JSFJspAttribute( | |
className = "java.lang.String", | |
rtexprvalue = true) | |
public void setType(ValueExpression type) | |
{ | |
super.setType(type); | |
} | |
@Override | |
@JSFJspAttribute( | |
className = "javax.faces.event.ValueChangeListener", | |
rtexprvalue = true) | |
public void setBinding(ValueExpression binding) | |
{ | |
super.setBinding(binding); | |
} | |
} | |
------------------- |