You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Madhav Bhargava <Ma...@infosys.com> on 2008/12/03 11:50:40 UTC
Attach the current JSF View as an attachment
Hi All,
I have a rather unique requirement - On a JSF page I have a command button. On click of this button I want to capture the generated HTML for the current view I am on, truncate the left navigation, header and the footer. Extract the body HTML and open a save dialog box to save this HTML page with only body as attachment.
Any ideas of how it could be done using JSF?
Thanks,
Madhav
**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely
for the use of the addressee(s). If you are not the intended recipient, please
notify the sender by e-mail and delete the original message. Further, you are not
to copy, disclose, or distribute this e-mail or its contents to any other person and
any such actions are unlawful. This e-mail may contain viruses. Infosys has taken
every reasonable precaution to minimize this risk, but is not liable for any damage
you may sustain as a result of any virus in this e-mail. You should carry out your
own virus checks before opening the e-mail or attachment. Infosys reserves the
right to monitor and review the content of all messages sent to or from this e-mail
address. Messages sent to or from this e-mail address may be stored on the
Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***
RE: Attach the current JSF View as an attachment
Posted by Madhav Bhargava <Ma...@infosys.com>.
Matt wrote :
>Hi Madhav,
>This is an interesting requirement. Off the top of my head I'd say you could probably make a custom component to wrap the section you want to capture. Then in that components renderer, in the >encodeBegin method you switch the responseWriter to a StringWriter or some other writer. Then in encodeEnd you save the contents of the StringWriter somewhere you can use it later and set back the >correct responseWriter, and if you still want to write the response you can do so. Also you need to override rendersChildren and have it return true. The code would look something like this.
>
>private ResponseWriter oldWriter;
>private StringWriter sWriter;
>// encodeBegin
>
>sWriter = new StringWriter();
>HtmlResponseWriterImpl writer = new HtmlResponseWriterImpl(sWriter, "text/html","utf-8");
>
>oldWriter = context.getResponseWriter();
>context.setResponseWriter(writer);
>
>
>//encodeEnd
>StringBuffer sb = sWriter.getBuffer();
>// do what you want with the sb
>context.setResponseWriter(oldWriter);
>// if you want to output it as well...
>oldWriter.write(sb.toString());
>
>I think this may work for what you want to do.
>
>Matt
Initially i tried doing that using a call to a method on click of a link but then i realized that it will still output the entire HTML including the left navigation, header and footer. I created a custom component to capture the part of the Page. I provided 2 attributes - targetPath - where to save the Html output and isCaptured - to conditionally capture
It works well. Thanks for all your help.
Regards,
Madhav
________________________________
From: Madhav Bhargava [mailto:Madhav_Bhargava@infosys.com]
Sent: mercredi 3 décembre 2008 11:51
To: MyFaces Discussion
Subject: Attach the current JSF View as an attachment
Hi All,
I have a rather unique requirement - On a JSF page I have a command button. On click of this button I want to capture the generated HTML for the current view I am on, truncate the left navigation, header and the footer. Extract the body HTML and open a save dialog box to save this HTML page with only body as attachment.
Any ideas of how it could be done using JSF?
Thanks,
Madhav
**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely
for the use of the addressee(s). If you are not the intended recipient, please
notify the sender by e-mail and delete the original message. Further, you are not
to copy, disclose, or distribute this e-mail or its contents to any other person and
any such actions are unlawful. This e-mail may contain viruses. Infosys has taken
every reasonable precaution to minimize this risk, but is not liable for any damage
you may sustain as a result of any virus in this e-mail. You should carry out your
own virus checks before opening the e-mail or attachment. Infosys reserves the
right to monitor and review the content of all messages sent to or from this e-mail
address. Messages sent to or from this e-mail address may be stored on the
Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***
RE: Attach the current JSF View as an attachment
Posted by Ma...@sanofi-aventis.com.
Hi Madhav,
This is an interesting requirement. Off the top of my head I'd say you could probably make a custom component to wrap the section you want to capture. Then in that components renderer, in the encodeBegin method you switch the responseWriter to a StringWriter or some other writer. Then in encodeEnd you save the contents of the StringWriter somewhere you can use it later and set back the correct responseWriter, and if you still want to write the response you can do so. Also you need to override rendersChildren and have it return true. The code would look something like this.
private ResponseWriter oldWriter;
private StringWriter sWriter;
// encodeBegin
sWriter = new StringWriter();
HtmlResponseWriterImpl writer = new HtmlResponseWriterImpl(sWriter, "text/html","utf-8");
oldWriter = context.getResponseWriter();
context.setResponseWriter(writer);
//encodeEnd
StringBuffer sb = sWriter.getBuffer();
// do what you want with the sb
context.setResponseWriter(oldWriter);
// if you want to output it as well...
oldWriter.write(sb.toString());
I think this may work for what you want to do.
Matt
________________________________
From: Madhav Bhargava [mailto:Madhav_Bhargava@infosys.com]
Sent: mercredi 3 décembre 2008 11:51
To: MyFaces Discussion
Subject: Attach the current JSF View as an attachment
Hi All,
I have a rather unique requirement - On a JSF page I have a command button. On click of this button I want to capture the generated HTML for the current view I am on, truncate the left navigation, header and the footer. Extract the body HTML and open a save dialog box to save this HTML page with only body as attachment.
Any ideas of how it could be done using JSF?
Thanks,
Madhav
**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely
for the use of the addressee(s). If you are not the intended recipient, please
notify the sender by e-mail and delete the original message. Further, you are not
to copy, disclose, or distribute this e-mail or its contents to any other person and
any such actions are unlawful. This e-mail may contain viruses. Infosys has taken
every reasonable precaution to minimize this risk, but is not liable for any damage
you may sustain as a result of any virus in this e-mail. You should carry out your
own virus checks before opening the e-mail or attachment. Infosys reserves the
right to monitor and review the content of all messages sent to or from this e-mail
address. Messages sent to or from this e-mail address may be stored on the
Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***