You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (Jira)" <ji...@apache.org> on 2022/09/14 19:17:00 UTC

[jira] [Updated] (WW-3328) make sitemesh plugin OldDecorator2NewStrutsFreemarkerDecorator configurable

     [ https://issues.apache.org/jira/browse/WW-3328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukasz Lenart updated WW-3328:
------------------------------
    Description: 
struts2 supports sitemesh2.4 now, WW-3291
I'd like to extends the default OldDecorator2NewStrutsFreemarkerDecorator to do something fantastic,like compress page,render html fragment for AJAX request
I with struts provide a @Inject way.

here is sample code

public class MyOldDecorator2NewStrutsFreemarkerDecorator extends OldDecorator2NewStrutsFreemarkerDecorator {

	public static final String X_FRAGMENT = "X-FRAGMENT";

	public MyOldDecorator2NewStrutsFreemarkerDecorator(Decorator oldDecorator) {
		super(oldDecorator);
	}

	protected void render(Content content, HttpServletRequest request,
			HttpServletResponse response, ServletContext servletContext,
			ActionContext ctx) throws ServletException, IOException {
		String replacement = request.getHeader(X_FRAGMENT);
		if (replacement != null) {
				StringWriter writer = new StringWriter();
				content.writeBody(writer);
				response.getWriter().write(HtmlUtils.compress(replacement.split(","), writer.toString())); 
				return;
		} else {
			super.render(content, request, response, servletContext, ctx);
		}
	}

}

  was:
struts2 supports sitemesh2.4 now, https://issues.apache.org/struts/browse/WW-3291
I'd like to extends the default OldDecorator2NewStrutsFreemarkerDecorator to do something fantastic,like compress page,render html fragment for AJAX request
I with struts provide a @Inject way.

here is sample code

public class MyOldDecorator2NewStrutsFreemarkerDecorator extends OldDecorator2NewStrutsFreemarkerDecorator {

	public static final String X_FRAGMENT = "X-FRAGMENT";

	public MyOldDecorator2NewStrutsFreemarkerDecorator(Decorator oldDecorator) {
		super(oldDecorator);
	}

	protected void render(Content content, HttpServletRequest request,
			HttpServletResponse response, ServletContext servletContext,
			ActionContext ctx) throws ServletException, IOException {
		String replacement = request.getHeader(X_FRAGMENT);
		if (replacement != null) {
				StringWriter writer = new StringWriter();
				content.writeBody(writer);
				response.getWriter().write(HtmlUtils.compress(replacement.split(","), writer.toString())); 
				return;
		} else {
			super.render(content, request, response, servletContext, ctx);
		}
	}

}


> make sitemesh plugin OldDecorator2NewStrutsFreemarkerDecorator configurable
> ---------------------------------------------------------------------------
>
>                 Key: WW-3328
>                 URL: https://issues.apache.org/jira/browse/WW-3328
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Plugin - SiteMesh
>            Reporter: Yanming Zhou
>            Assignee: Musachy Barroso
>            Priority: Major
>             Fix For: 6.1.0
>
>
> struts2 supports sitemesh2.4 now, WW-3291
> I'd like to extends the default OldDecorator2NewStrutsFreemarkerDecorator to do something fantastic,like compress page,render html fragment for AJAX request
> I with struts provide a @Inject way.
> here is sample code
> public class MyOldDecorator2NewStrutsFreemarkerDecorator extends OldDecorator2NewStrutsFreemarkerDecorator {
> 	public static final String X_FRAGMENT = "X-FRAGMENT";
> 	public MyOldDecorator2NewStrutsFreemarkerDecorator(Decorator oldDecorator) {
> 		super(oldDecorator);
> 	}
> 	protected void render(Content content, HttpServletRequest request,
> 			HttpServletResponse response, ServletContext servletContext,
> 			ActionContext ctx) throws ServletException, IOException {
> 		String replacement = request.getHeader(X_FRAGMENT);
> 		if (replacement != null) {
> 				StringWriter writer = new StringWriter();
> 				content.writeBody(writer);
> 				response.getWriter().write(HtmlUtils.compress(replacement.split(","), writer.toString())); 
> 				return;
> 		} else {
> 			super.render(content, request, response, servletContext, ctx);
> 		}
> 	}
> }



--
This message was sent by Atlassian Jira
(v8.20.10#820010)