Теги могут работать и с динамическими атрибутами.
Пример JSP:
А вот результат в браузере:
Вот реализация нашего тега:
" + key + " = " + value + "
" );
}
}
public void setDynamicAttribute( String uri, String localName,
Object value )
throws JspException
{
keys.add( localName );
values.add( value );
}
}
Как видно из примера для работы с динамическими атрибутами, тегу нужно реализовать интерфейс javax.servlet.jsp.tagext.DynamicAttributes, он был добавлен в javax.servlet.jsp.tagext с приходом JSP 2.0
Пример JSP:
....
<h2>Invocation 1 (six attributes)</h2>
<ul>
<my:echoAttributes x="1" y="2" z="3" r="red" g="green" b="blue"/>
</ul>
<h2>Invocation 2 (zero attributes)</h2>
<ul>
<my:echoAttributes/>
</ul>
<h2>Invocation 3 (three attributes)</h2>
<ul>
<my:echoAttributes dogName="Scruffy"
catName="Fluffy"
blowfishName="Puffy"/>
</ul>
....
А вот результат в браузере:
<h2>Invocation 1 (six attributes)</h2>
<ul>
<li>x = 1</li>
<li>y = 2</li>
<li>z = 3</li>
<li>r = red</li>
<li>g = green</li>
<li>b = blue</li>
</ul>
<h2>Invocation 2 (zero attributes)</h2>
<ul>
</ul>
<h2>Invocation 3 (three attributes)</h2>
<ul>
<li>dogName = Scruffy</li>
<li>catName = Fluffy</li>
<li>blowfishName = Puffy</li>
</ul>
Вот реализация нашего тега:
package jsp2.examples.simpletag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import javax.servlet.jsp.tagext.DynamicAttributes;
import java.util.ArrayList;
import java.util.Iterator;
import java.io.IOException;
/**
* SimpleTag handler that echoes all its attributes
*/
public class EchoAttributesTag
extends SimpleTagSupport
implements DynamicAttributes
{
private ArrayList keys = new ArrayList();
private ArrayList values = new ArrayList();
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
for( int i = 0; i < keys.size(); i++ ) {
String key = (String)keys.get( i );
Object value = values.get( i );
out.println( "
Комментариев нет:
Отправить комментарий