Well, the value being written out contains markup that I want passed
through with no changes.  writer,print() and TextStreamResponse both
encode the markup.  writer.writeRaw(value) does it nicely.

Bill

On 5/23/07, Ben Sommerville <[EMAIL PROTECTED]> wrote:
Doh!
I missed that.

StreamResponse is much better.
i.e.
   return new TextStreamResponse("text/plain",val);

thanks
Ben

> -----Original Message-----
> From: Howard Lewis Ship [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, 23 May 2007 4:20 PM
> To: Tapestry users
> Subject: Re: T5: PrintWriter weirdness
>
> You can also return a StreamResponse, which is probably
> easier to implement
> that ActionResponseGenerator.
>
> On 5/22/07, Ben Sommerville <[EMAIL PROTECTED]> wrote:
> >
> > Bill,
> >
> > When you return void from an actionLink method the default response
> > of tapestry is to render the page.
> >
> > To just return the editor value you need to return an
> > ActionResponseGenerator
> > that outputs your desired response.
> >
> > e.g.
> >
> >     ActionResponseGenerator onInPlaceEditorSubmit() throws
> IOException {
> >         final String val = _request.getParameter("value");
> >         System.out.println("text is:" + val);
> >         return new ActionResponseGenerator() {
> >             public void sendClientResponse(Response response) throws
> > IOException {
> >                 // Note we are using Response parameter,
> not the injected
> > response
> >                 PrintWriter writer =
> > response.getPrintWriter("text/plain");
> >                 writer.print(val);
> >             }
> >         };
> >     }
> >
> > Now when you submit your changed value the web page will be updated.
> >
> > May I highly recommend Firebug to help with this sort of
> thing, being able
> > to see the requests & responses makes debugging much easier.
> >
> >
> >
> > Also, if you are not actually submitting a form you don't
> need the form
> > element in your page.
> > You can change your template to
> >
> > <html
> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
> > <body>
> >     <p id="editme2">Click me to edit this nice long text.</p>
> >
> >     <script type="text/javascript">
> >         new Ajax.InPlaceEditor('editme2', '${actionURL}',
> > {rows:15,cols:40});
> >     </script>
> >
> > </body>
> > </html>
> >
> > and add the following to the page class to include the
> required javascript
> >
> >     @Inject
> >     private PageRenderSupport pageRender;
> >     @Inject
> >     @Path("${tapestry.scriptaculous}/prototype.js")
> >     private Asset prototype;
> >     @Inject
> >     @Path("${tapestry.scriptaculous}/scriptaculous.js")
> >     private Asset scriptaculous;
> >
> >     public void beginRender() {
> >         pageRender.addScriptLink(prototype, scriptaculous);
> >     }
> >
> > cheers
> > Ben
> >
> > > -----Original Message-----
> > > From: Bill Holloway [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, 23 May 2007 10:38 AM
> > > To: Tapestry users
> > > Subject: Re: T5: PrintWriter weirdness
> > >
> > > Actually, the exception goes away on the client side only
> (No stack
> > > trace dumped to the web page) if I use writer.close().
> writer.flush()
> > > dumps the trace to both the console and the web page.
> > >
> > > Bill
> > >
> > > On 5/22/07, Bill Holloway <[EMAIL PROTECTED]> wrote:
> > > > I'm using an in-place-editor under script.aculo.us to
> edit some text
> > > > printed to the browser.  In my page class I have
> > > >
> > > > public String getActionURL ()
> > > >         {
> > > >                 Link inPlaceLink = _resources.createActionLink
> > > > ("inPlaceEditorSubmit", false, (Object[]) null);
> > > >                 return inPlaceLink.toURI();
> > > >         }
> > > >
> > > >         void onInPlaceEditorSubmit () throws IOException
> > > >         {
> > > >                 String val = _request.getParameter ("value");
> > > >                 System.out.println ("text is:" + val);
> > > >                 PrintWriter writer =
> > > _response.getPrintWriter ("text/plain");
> > > >                 writer.print (val);
> > > >                 writer.flush();
> > > >         }
> > > >
> > > > My page template is
> > > >
> > > > <html
> > > xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
> > > > <body>
> > > >
> > > >
> > > > <form t:type="form" t:id="inPlaceForm">
> > > >
> > > >         <p id="editme2">Click me to edit this nice long
> text.</p>
> > > >
> > > >         <script type="text/javascript">
> > > >                 new Ajax.InPlaceEditor('editme2',
> > > '${actionURL}', {rows:15,cols:40});
> > > >         </script>
> > > >
> > > > </form>
> > > >
> > > > </body>
> > > > </html>
> > > >
> > > > This all works just fine except that there is an
> > > > "IllegalStateException" thrown when I submit the
> changed field.  It
> > > > complains about that the printwriter (I guess) is
> "Committed".  A
> > > > partial stack trace starting at the top is shown below.  I
> > > notice that
> > > > if I omit the call to writer.flush(), there is no
> exception, but the
> > > > text on the web page does not reflect the changed value --
> > > it reverts
> > > > to the initial value before the change -- doubtlessly
> > > because without
> > > > the flush, the stream never gets back to the
> client-side response
> > > > handler.
> > > >
> > > > #
> > > org.mortbay.jetty.servlet.ServletHttpResponse.resetBuffer(Serv
> > > letHttpResponse.java:212)
> > > > #
> > > org.mortbay.jetty.servlet.ServletHttpResponse.sendRedirect(Ser
> > > vletHttpResponse.java:458)
> > > > #
> > > org.apache.tapestry.internal.services.ResponseImpl.sendRedirec
> > > t(ResponseImpl.java:63)
> > > > #
> > > org.apache.tapestry.internal.services.LinkActionResponseGenera
> > > tor.sendClientResponse(LinkActionResponseGenerator.java:39)
> > > > #
> > > org.apache.tapestry.internal.services.ComponentActionDispatche
> > > r.dispatch(ComponentActionDispatcher.java:122)
> > > >
> > > > Thoughts?
> > > >
> > > > Bill
> > > > --
> > > > "The future is here.  It's just not evenly distributed yet."
> > > >
> > > >      -- Traditional
> > > >
> > >
> > >
> > > --
> > > "The future is here.  It's just not evenly distributed yet."
> > >
> > >      -- Traditional
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> Howard M. Lewis Ship
> TWD Consulting, Inc.
> Independent J2EE / Open-Source Java Consultant
> Creator and PMC Chair, Apache Tapestry
> Creator, Apache HiveMind
>
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
"The future is here.  It's just not evenly distributed yet."

    -- Traditional

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to