Opet zdravim konferenci :-)
Pisu JSP Tag ktery by mel umet zobrazit polozku z databaze. Jenze
polozky jsou ruznych typu (treba "jidlo" a "nadobi" :-) takze i
HTML/JSP fragmenty pro jejich zobrazeni jsou odlisne. Tyto fragmenty
mam pripravene ve WEB-INF/jspf jako "jidlo.jspf" a "nadobi.jspf", neni
to staticke HTML, ale jsou tam i ruzne hodnoty vyplnovane pomoci EL.
Treba nazev polozky pres ${title}.
Jenze ted nevim jak tenhle fragment vnutit tag handleru ke zpracovani. Mam:
public void doTag() throws JspException {
PageContext context = (PageContext)getJspContext();
JspWriter out=context.getOut();
String jspfFile = "/path/to/fragment.jspf";
// [*]
JspFragment f = getJspBody();
if (f != null) f.invoke(out);
}
JFPS muzu otevrit a na miste oznacenem [*] bych ho potreboval nejak
zpracovat. Nebo z nej nejak udelat JspFragment a zavolat jeho metodu
invoke(). Jenze nevim jak - v javadocu se u JspFragment pise "Note
that tag library developers and page authors should not generate
JspFragment implementations manually."
Taky jsem v miste [*] zkousel context.include(jspfFile) ale dockal
jsem se jen IllegalStateException.
Muj cil je:
<seznam:forEach outVar="id">
<seznam:display id="${id}" />
</seznam:forEach>
Napadlo me par nehezkych reseni, treba tomu tagu "display" predavat
jeste parametr "type" a napsat ty fragmenty primo mezi <display> ..
</display> pricemz tag by vzdycky zkontroloval jestli se typ ID
shoduje s typem fragmentu a podle toho ho vypsal/nevypsal. Jenze pro X
polozek a Y fragmentu by byl tag zbytecne volan X*Y, coz se mi nelibi.
Nemate nekdo napad jak tuhle vec udelat "spravne"?
Diky
Goo