There we go. I've pretty much got this, thanks to everyone. Here's a helper
class I drummed up--It's not fully tested, doesn't handle both HTML & text,
and doesn't take parameters yet. I'll try and post a new thread (maybe even
on the wiki?) when I get those details hashed out. For now, this is a good
proof of concept that can be used virtually anywhere (to reiterate: This
requires 1.3 beta 2):
/**
* Used with WicketTester to capture rendered HTML from a WicketPage.
ex:<p/>
*
* <pre>
* CaptureApplication app = new CaptureApplication();
* WicketTester renderer = new WicketTester(app);
* renderer.startPage(WicketPage.class);
* String html = app.getRenderedText();
* </pre>
*/
class CaptureApplication extends WebApplication {
/** Holds HTML rendered from Wicket files after the request cycle is run
through. */
private String renderedText;
/** Required for WebApplication interface--this won't be called in
WicketTester. */
public Class getHomePage() {
return null;
}
/**
* @throws IllegalStateException if renderedText is null (meaning the
request has not yet been
* cycled through).
*/
String getRenderedText() {
if (renderedText == null) {
throw new IllegalStateException("Response text has not been rendered
yet");
}
return renderedText;
}
/** This is automagically called during the Wicket request cycle. */
protected IRequestCycleProcessor newRequestCycleProcessor() {
return new InterceptingCycle();
}
/**
* Intercepts request cycle and extracts HTML rendered from Wicket files
before they are sent as a
* response to the "browser".
*/
private class InterceptingCycle extends WebRequestCycleProcessor {
@Override
/** Intercepts request cycle and stores the rendered HTML in a gettable
String. */
public void respond(RequestCycle requestCycle) {
//We need a holder for the HTML that Wicket can work with.
StringResponse emailResponse = new StringResponse();
//Now we swap the holder in for the real response.
WebResponse originalResponse = (WebResponse)
RequestCycle.get().getResponse();
RequestCycle.get().setResponse(emailResponse);
//Do the real work...
super.respond(requestCycle);
//Snag the rendered HTML...
renderedText = emailResponse.toString();
//We need to flip back to the original response to avoid a
ClassCastException on the tail end
//of the request cycle.
RequestCycle.get().setResponse(originalResponse);
}
}
}
--
View this message in context:
http://www.nabble.com/How-to-get-HTML-source-code-from-a-wicket-page-tf3968790.html#a11548230
Sent from the Wicket - User mailing list archive at Nabble.com.
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user