Author: tmjee Date: Sat Oct 14 08:56:38 2006 New Revision: 463964 URL: http://svn.apache.org/viewvc?view=rev&rev=463964 Log: WW-1477 - added a flush attribute to action tag, cause flushing causes exception for some user. Although the exception is swallowed and things work as usual its kindof irritating, it would be nice if there's a way to get rid of such exception by optionally allowing flush to be turn on and off
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ActionTag.java struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java?view=diff&rev=463964&r1=463963&r2=463964 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java Sat Oct 14 08:56:38 2006 @@ -121,6 +121,7 @@ protected String namespace; protected boolean executeResult; protected boolean ignoreContextParams; + protected boolean flush = true; public ActionComponent(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { super(stack); @@ -131,10 +132,12 @@ public boolean end(Writer writer, String body) { boolean end = super.end(writer, "", false); try { - try { - writer.flush(); - } catch (IOException e) { - LOG.warn("error while trying to flush writer ", e); + if (flush) { + try { + writer.flush(); + } catch (IOException e) { + LOG.warn("error while trying to flush writer ", e); + } } executeAction(); @@ -290,5 +293,13 @@ */ public void setIgnoreContextParams(boolean ignoreContextParams) { this.ignoreContextParams = ignoreContextParams; + } + + /** + * whether the writer should be flush upon end of action component tag, default to true. + * @s.tagattribute required="false" type="Boolean" default="true" + */ + public void setFlush(boolean flush) { + this.flush = flush; } } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ActionTag.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ActionTag.java?view=diff&rev=463964&r1=463963&r2=463964 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ActionTag.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/jsp/ActionTag.java Sat Oct 14 08:56:38 2006 @@ -36,6 +36,7 @@ protected String namespace; protected boolean executeResult; protected boolean ignoreContextParams; + protected boolean flush = true; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new ActionComponent(stack, req, res); @@ -49,6 +50,7 @@ action.setNamespace(namespace); action.setExecuteResult(executeResult); action.setIgnoreContextParams(ignoreContextParams); + action.setFlush(flush); action.start(pageContext.getOut()); } @@ -71,5 +73,13 @@ public void setIgnoreContextParams(boolean ignoreContextParams) { this.ignoreContextParams = ignoreContextParams; + } + + public void setFlush(boolean flush) { + this.flush = flush; + } + + public boolean getFlush() { + return this.flush; } } Modified: struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld?view=diff&rev=463964&r1=463963&r2=463964 ============================================================================== --- struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld (original) +++ struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld Sat Oct 14 08:56:38 2006 @@ -2969,7 +2969,14 @@ <![CDATA[whether the request parameters are to be included when the action is invoked]]></description> </attribute> - + <attribute> + <name>flush</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + + <description><![CDATA[whether the writer should be flush upon end of the action tag, default to true.]]></description> + + </attribute> </tag> <tag>