jsp-фрагменты -- это куски кода, которые могут динамически исчисляться в момент запроса. Эти таких кусков состоит вся джееспе-страница. Эта сущность представляется классом
Его методы:
Они абстрактны потому, что этот класс наслудует и реализовывает конкретный контейнер поставщика.
Вот пример, где ячейки таблицы перетасовываются в рендомном порядке для каждого отдельного вызова:
Вот реализация одного тега:
А вот реализация второго:
javax.servlet.jsp.tagext.JspFragment.Его методы:
abstract JspContext getJspContext()abstract void invoke(java.io.Writer out) - это команда к исполнению контента, который находится в фрагменте, и вывод его в переданный исходящий поток. Если переда null, то передается в поток который вернется из getJspContext().Они абстрактны потому, что этот класс наслудует и реализовывает конкретный контейнер поставщика.
Вот пример, где ячейки таблицы перетасовываются в рендомном порядке для каждого отдельного вызова:
<font color="#ffffff">
<table>
<my:shuffle>
<jsp:attribute name="fragment1">
<tr>
<my:shuffle>
<jsp:attribute name="fragment1">
<my:tile color="#ff0000" label="A"/>
</jsp:attribute>
<jsp:attribute name="fragment2">
<my:tile color="#00ff00" label="B"/>
</jsp:attribute>
<jsp:attribute name="fragment3">
<my:tile color="#0000ff" label="C"/>
</jsp:attribute>
</my:shuffle>
</tr>
</jsp:attribute>
<jsp:attribute name="fragment2">
<tr>
<my:shuffle>
<jsp:attribute name="fragment1">
<my:tile color="#ff0000" label="1"/>
</jsp:attribute>
<jsp:attribute name="fragment2">
<my:tile color="#00ff00" label="2"/>
</jsp:attribute>
<jsp:attribute name="fragment3">
<my:tile color="#0000ff" label="3"/>
</jsp:attribute>
</my:shuffle>
</tr>
</jsp:attribute>
<jsp:attribute name="fragment3">
<tr>
<my:shuffle>
<jsp:attribute name="fragment1">
<my:tile color="#ff0000" label="!"/>
</jsp:attribute>
<jsp:attribute name="fragment2">
<my:tile color="#00ff00" label="@"/>
</jsp:attribute>
<jsp:attribute name="fragment3">
<my:tile color="#0000ff" label="#"/>
</jsp:attribute>
</my:shuffle>
</tr>
</jsp:attribute>
</my:shuffle>
</table>
</font>
Вот реализация одного тега:
package jsp2.examples.simpletag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.util.HashMap;
import java.io.IOException;
/**
* SimpleTag handler that accepts takes three attributes of type
* JspFragment and invokes then in a random order.
*/
public class ShuffleSimpleTag extends SimpleTagSupport {
private JspFragment fragment1;
private JspFragment fragment2;
private JspFragment fragment3;
public void doTag() throws JspException, IOException {
switch( (int)(Math.random() * 6) ) {
case 0:
fragment1.invoke( null );
fragment2.invoke( null );
fragment3.invoke( null );
break;
case 1:
fragment1.invoke( null );
fragment3.invoke( null );
fragment2.invoke( null );
break;
case 2:
fragment2.invoke( null );
fragment1.invoke( null );
fragment3.invoke( null );
break;
case 3:
fragment2.invoke( null );
fragment3.invoke( null );
fragment1.invoke( null );
break;
case 4:
fragment3.invoke( null );
fragment1.invoke( null );
fragment2.invoke( null );
break;
case 5:
fragment3.invoke( null );
fragment2.invoke( null );
fragment1.invoke( null );
break;
}
}
public void setFragment1( JspFragment fragment1 ) {
this.fragment1 = fragment1;
}
public void setFragment2( JspFragment fragment2 ) {
this.fragment2 = fragment2;
}
public void setFragment3( JspFragment fragment3 ) {
this.fragment3 = fragment3;
}
}
А вот реализация второго:
package jsp2.examples.simpletag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
import java.util.HashMap;
/**
* Displays a tile as a single cell in a table.
*/
public class TileSimpleTag extends SimpleTagSupport {
private String color;
private String label;
public void doTag() throws JspException, IOException {
getJspContext().getOut().write(
"" + this.label +
" " );
}
public void setColor( String color ) {
this.color = color;
}
public void setLabel( String label ) {
this.label = label;
}
}
Комментариев нет:
Отправить комментарий