Custom Tag zum Parsen

Status
Nicht offen für weitere Antworten.

Ralf Ueberfuhr

Bekanntes Mitglied
Ich möchte einen Tag schreiben, der seinen Body nach bestimmten Kriterien rendert, diesen leicht veränderten Body danach aber weiter an die JSP-Engine geben soll. Leider funktioniert das nicht, der Body ist immer leer. Woran liegt es?


Code:
public class ParseTag extends BodyTagSupport {

	private static final long serialVersionUID = 1L;
	/* *****************************************************
	 *   B O D Y T A G   -   I M P L E M E N T A T I O N   *
	 ***************************************************** */
	public int doAfterBody() throws JspException {
		try {
			final String newBody = new ContentParser().parse(getBodyContent().getString());
			getBodyContent().clear();
			getBodyContent().write(newBody);
		} catch (IOException e) {
			throw new JspException(e);
		} catch (ParseException e) {
			throw new JspException(e);
		};
		return SKIP_BODY;
	}

	public int doEndTag() throws JspException {
		return EVAL_PAGE;
	}

	public int doStartTag() throws JspException {
		return EVAL_BODY_BUFFERED;
	}

}

EDIT: Ich habe das Hauptproblem, dass der Body erst von der JSP-Engine gerendert , und dann erst in den BodyContent geschrieben wird. Ich benötige es aber genau andersherum!
 

Ralf Ueberfuhr

Bekanntes Mitglied
Naja, bei doInitBody ist der BodyContent noch leer. (Wundert mich auch.)

Hier mal meine Testumgebung:
WebSphere Application Server 6.1 Testumgebung, integriert im Rational Software Architect V7 Open Beta
(funktioniert aber auch nicht unter V6.0.1.1)
 

Ralf Ueberfuhr

Bekanntes Mitglied
Nur so eine Verständnisfrage: Ist es überhaupt möglich, z.B. per EL eine Zeichenkette in die JSP zu inkludieren, sodass - falls diese Zeichenkette weitere JSP-Tags enthält, diese ebenfalls übersetzt werden?

Meiner Meinung nach nicht, denn die JSP wird nur einmal übersetzt, und nicht dynamisch zur Laufzeit, korrekt?

Ein <jsp:include url="IrgendEinServlet"> würde also nur das Ergebnis, das das Servlet herausgibt, darstellen, nicht etwa nochmal rendern, korrekt?

Ich vermute, ich muss meinen eigenen Renderer dafür schreiben...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben