struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jasper Rosenberg (JIRA)" <j...@apache.org>
Subject [jira] Commented: (WW-1808) Support Freemarker template_exception_handler=rethrow
Date Sat, 05 May 2007 13:27:46 GMT

    [ https://issues.apache.org/struts/browse/WW-1808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40932
] 

Jasper Rosenberg commented on WW-1808:
--------------------------------------

FYI, the relevant FreemarkerResult code had actually changed a bit in Struts 2 from WW 2.2.4.
 

The reason I suggested adding a parameter for this behavior rather than just always writing
to a buffer first is that I didn't want users that weren't using rethrow to have to have this
extra overhead for every page rendered.

We  have been using my suggested patch in production for months (originally with WW 2.2.4),
and it behaves as desired.

> Support Freemarker template_exception_handler=rethrow
> -----------------------------------------------------
>
>                 Key: WW-1808
>                 URL: https://issues.apache.org/struts/browse/WW-1808
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Views
>    Affects Versions: 2.0.6
>            Reporter: Jasper Rosenberg
>            Priority: Minor
>             Fix For: 2.1.0
>
>
> If you set in freemarker.properties, the property:
> template_exception_handler=rethrow
> Then you do not want the FreemarkerResult to output to the Writer unless you know the
template processed cleanly (so you can handle the exception and go to a nice error page rather
than being stuck with half rendered template output).
> My suggestion is to add a new parameter to FreemarkerResult, something like "writeCompleted"
which defaults to false and, if true, renders the template into a String buffer, writing the
result to the actual Writer only if it succeeded.
> Something like:
> // Process the template
> Writer writer = getWriter();
> if (getWriteCompleted()) {
>     CharArrayWriter charArrayWriter = new CharArrayWriter();
>     template.process(model, charArrayWriter);
>     charArrayWriter.flush();
>     charArrayWriter.writeTo(writer);
> } else {
>     template.process(model, writer);
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message