Yes, that would be template file name. musachy
On Thu, Feb 12, 2009 at 3:24 PM, Ignacio de Córdoba <icord...@skios.es> wrote: > > OK. Thanks for the advice. I tried to use Tiles2 because my user interface is > used with Tiles2. If I get a Tile for the email, the email received has the > same look&feel as the web pages. And I can re-use JSP/JSTL/OGNL parts. > > I'll give FreeMarker a try... just a question... in the code you sent... the > "String template" argument is just the file name of the Freemarket content > (mail.ftl) file? > > Thanks, > Ignacio > > > Musachy Barroso wrote: >> >> The thing is that neither JSP nor Tiles are designed for what you want >> to do. BTW, FreeMarker is already in your application. >> >> musachy >> >> On Thu, Feb 12, 2009 at 2:19 PM, Ignacio de Córdoba <icord...@skios.es> >> wrote: >>> >>> hi again, >>> thanks for your reply. I've never used FreeMaker or Velocity. I use >>> Tiles2... can you figure out if your solution can be solved with Tiles2. >>> I >>> wouldn't like to get into those, I'm sure great, technologies only for >>> this. >>> >>> Thanks, >>> Ignacio >>> >>> >>> Musachy Barroso wrote: >>>> >>>> I don't know how to fix it, but i would never use JSP for this. I >>>> would suggest you use FreeMarker or Velocity which will be very easy >>>> to get working and won't break across different containers/versions. >>>> For example, for FreeMarker (which will be in the classpath already), >>>> I use this: >>>> >>>> public static void process(ServletContext context, String template, >>>> Map<String, Object> values, Writer writer) throws IOException, >>>> TemplateException { >>>> Configuration cfg = new Configuration(); >>>> cfg.setDirectoryForTemplateLoading(new >>>> File(context.getRealPath("/templates"))); >>>> cfg.setObjectWrapper(new DefaultObjectWrapper()); >>>> >>>> BeansWrapper wrapper = BeansWrapper.getDefaultInstance(); >>>> TemplateHashModel staticModels = wrapper.getStaticModels(); >>>> Template temp = cfg.getTemplate(template); >>>> temp.process(values, writer); >>>> writer.flush(); >>>> } >>>> >>>> //also JSP has not way to deal with empty spaces and such >>>> >>>> musachy >>>> >>>> On Thu, Feb 12, 2009 at 1:49 PM, Ignacio de Córdoba <icord...@skios.es> >>>> wrote: >>>>> >>>>> Hi there, >>>>> I had a working solution that was fine for struts1 and doesn't work >>>>> with >>>>> struts2. >>>>> The scenario is evey time the application needs to send a mail from an >>>>> action (for example, when a user signs up, the system sends him a >>>>> welcome >>>>> mail) >>>>> >>>>> My solution got the JSP the following way: >>>>> >>>>> public String getResourceAsString(String path) throws >>>>> ServletException, >>>>> IOException >>>>> { >>>>> HttpServletRequest request = >>>>> org.apache.struts2.ServletActionContext.getRequest(); >>>>> HttpServletResponse response = >>>>> ServletActionContext.getResponse(); >>>>> try >>>>> { >>>>> ByteArrayOutputStream out = new >>>>> ByteArrayOutputStream(); >>>>> RequestDispatcher dispatcher = >>>>> request.getRequestDispatcher(path); >>>>> RedirectingServletResponse dummyResponse = new >>>>> RedirectingServletResponse(response, out); >>>>> dispatcher.include(request, dummyResponse); >>>>> return out.toString(); >>>>> } catch (NullPointerException e) >>>>> { >>>>> return "<p>No such template: " + path + "</p>"; >>>>> } >>>>> } >>>>> >>>>> (RedirectingServletResponse class just extends >>>>> HttpServletResponseWrapper >>>>> and captures output to a ByteArrayOutputStream) >>>>> >>>>> >>>>> The JSP needs a small scriptlet at its end: >>>>> <% out.flush(); %> >>>>> >>>>> Without it, the mail is sent blank as the JSP is not rendered to >>>>> HTML/text >>>>> as the request has not ended (I use the current thread request because: >>>>> 1) I >>>>> don't know how to create a brand new request/response 2) This way I can >>>>> use >>>>> all request parameters, attributes... in the mail sent and so not use >>>>> just >>>>> plain HTML but real JSP. >>>>> >>>>> The problem now is that struts2 shows the following exception: >>>>> >>>>> java.io.IOException: Stream closed >>>>> >>>>> >>>>> org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204) >>>>> >>>>> org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115) >>>>> >>>>> org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:173) >>>>> >>>>> org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:956) >>>>> >>>>> org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:609) >>>>> >>>>> org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123) >>>>> >>>>> org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) >>>>> >>>>> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361) >>>>> >>>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265) >>>>> >>>>> com.servengine.struts2.InjectEJBInterceptor.intercept(InjectEJBInterceptor.java:89) >>>>> >>>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) >>>>> >>>>> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) >>>>> >>>>> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) >>>>> >>>>> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) >>>>> >>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >>>>> >>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206 >>>>> >>>>> Any ideas on this... or better... any directions on how can I >>>>> instanciate >>>>> a >>>>> "fake" response not based on current struts2 Action ServletResponse >>>>> object >>>>> (and so flush() or close() will not affect it). >>>>> >>>>> Thanks, >>>>> Ignacio >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/How-to-render-a-JSP-Struts2-action-to-send-it-%28mail%2C-...%29-tp21982445p21982445.html >>>>> Sent from the Struts - User mailing list archive at Nabble.com. >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>>> For additional commands, e-mail: user-h...@struts.apache.org >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> "Hey you! Would you help me to carry the stone?" Pink Floyd >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> For additional commands, e-mail: user-h...@struts.apache.org >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/How-to-render-a-JSP-Struts2-action-to-send-it-%28mail%2C-...%29-tp21982445p21982968.html >>> Sent from the Struts - User mailing list archive at Nabble.com. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>> For additional commands, e-mail: user-h...@struts.apache.org >>> >>> >> >> >> >> -- >> "Hey you! Would you help me to carry the stone?" Pink Floyd >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> >> >> > > -- > View this message in context: > http://www.nabble.com/How-to-render-a-JSP-Struts2-action-to-send-it-%28mail%2C-...%29-tp21982445p21984215.html > Sent from the Struts - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org > For additional commands, e-mail: user-h...@struts.apache.org > > -- "Hey you! Would you help me to carry the stone?" Pink Floyd --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org