On 10/26/06, Martin Cooper <[EMAIL PROTECTED]> wrote:
On 10/25/06, Wille Faler <[EMAIL PROTECTED]> wrote:
>
> Hi.
> I raised the question today on Don Browns blog about being able to have
> integration between Struts2 and DWR, to get a full MVC model if you only
> want to re-render a snippet of a web-page.
> I am not sure if this has been discussed previously, but Don encouraged
> me to send my ideas if I had any, so here goes:
> When I have done AJAX-based stuff, 9 times out of 10, all I really want
> to do i execute some business logic, and re-render a portion of a page.
> This would seem to fit well with a traditional MVC-approach, with the
> exception that I don't want to re-render the full page.
>
> Earlier this year, I implemented such a simple framework, basically
> using Webwork2/XWork and DWR, adding some code to glue it all together.
> It consists of the following things:
> - Some generic JavaScript that can interpret parameters (either from a
> form or URL) into a Map of parameters, akin to what Webwork uses.
> - A Controller that is called by DWR, taking the Map, a callback-target
> (in the web-page) and the name of an action as its arguments. This
> Controller then invokes an xwork ActionProxy to invoke the Action.
> - Custom Result-implementations for getting JSP-elements defined in the
> xwork results. These results use the DWR
> WebContextFactory.get().forwardToString() functionality, to get the
> resulting JSP-snippet as a String.
> - Said Result can then be sent back by the Controller through DWR, which
> is then handled by generic JavaScript and rendered to the predefined
> callback-target on the page.
> - When using forms, it can also do AJAX-based validation which makes use
> of proper Xwork-validation.
>
> As I said, I have already written code for this, it is quite compact and
> only a few hundred lines (11 implementation classes + generic JavaScript
> + dwr config), so obviously this integration is quite easy to create.


I'm not really a DWR user, but this seems like a lot of code to me, when all
you want to do is update part of the page.

It pretty much depends on what you mean: "update part of the page". In
case you want to take advantage of the whole MVC then I really think
this is one of the right way to do it.

If it were me, I would use Dojo > and simply make a single call to 
dojo.io.updateNode(node, url), with no custom code required on the server side.

Not everybody is using Dojo, as not everybody is using DWR. Dojo is a
heavy JS library, while DWR is a java library and from this
perspective I think DWR has an advantage.

And what is more important: there is no custom code on server side.
You just have your normal actions: you can invoke them through normal
requests, but also thru AJAX.

Can you help me understand what advantage I would gain by using DWR with this 
new code?


Simply said, and as the OP also mentioned: to use the same MVC
paradigm with DWR AJAX invocation.

HTH,

./alex
--
.w( the_mindstorm )p.

--
Martin Cooper


I
> would love to see something similar within the upcoming Struts2!
> I haven't attached the code to this mail, but it is available for
> download here: www.infonatural.com/ajax-mvc.zip (including
> jar-dependencies and some unit-tests, 3.6mb).
>
> If anyone wants to pick the code for ideas, or adapt it, feel free to do
> so as long as you retain the original @author comments as part of it (I
> am the sole copyright holder of the code, and you may use it under the
> ASF if you want).
> It would probably need some minor improvements to make it more in line
> with the rest of the Struts2-code (so tags work etc), as I only did the
> code originally for my needs and didn't bother doing more than I needed
> at the time.
>
> I apologise if this or something similar is already part of Struts2, but
> I got the impression that it may not be.
>
> regards
> Wille Faler
>
>
> ---------------------------------------------------------------------
> 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]

Reply via email to