[ 
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.

Reply via email to