yes, the bug is in ServletUrlRenderer which should pass the whole "action" to the url builder helper, instead of just the "actionName". It is fixed on trunk (https://issues.apache.org/struts/browse/WW-2944).
This would affect the REST plugin, which is one of the main things in 2.1, so I think we might want to go for a 2.1.5 build, what do you think? musachy On Fri, Jan 2, 2009 at 4:57 AM, Al Sutton <a...@funkyandroid.com> wrote: > OK, The problem seems to come in UrlHelper.buildURL on line 174 of > ServletUrlRenderer which is only be utilised when the action referred to in > the form tag is not explicitly defined (as is the case with actions using > the REST plugin). > > The buildURL is passed the actionName (/releases/7661) but not the > actionMethod (createStage2), and so constructs a URL without !createStage2 > on the end. > > It would appear that UrlHelper hasn't any methods to construct URLs with an > actionMethod so could this be a potentially more widespread problem that > I've only seen one example of? > > Al. > > Musachy Barroso wrote: >> >> Happy new year to you too :). >> >> I changed example.jsp in showcase to this: >> >> <s:set var="id" value="%{'exampleSubmit'}" /> >> <s:form action="%{id}!execute"> >> >> and the output html is (right): >> >> <form id="exampleSubmit" name="exampleSubmit" >> action="/struts2-showcase/tags/ui/exampleSubmit!execute.action" >> method="post"> >> >> Could you set a breakpoint in ServletUrlRenderer.renderFormUrl() and >> debug? The action name and method are parsed, depending on whether >> "allowDynamicMethodCalls" is true, and there is some logic around the >> action being found or not, so a few things can go wrong there. >> >> thanks >> musachy >> >> >> On Thu, Jan 1, 2009 at 4:39 AM, Al Sutton <a...@funkyandroid.com> wrote: >> >>> >>> Happy new year all. >>> >>> >>> I think I've found a couple of problems, one form based, and one rest >>> plugin >>> based (and these are reproducable :)). >>> >>> 1) In the JSP I have a form which uploads a file, the s:form tag is; >>> >>> <s:form action="/releases/%{id}!createStage2" >>> method="POST" >>> onsubmit="document.getElementById('submit_button').disabled = >>> 1;" >>> enctype="multipart/form-data"> >>> >>> But when is sent to the browser it's become; >>> >>> <form id="7661" >>> onsubmit="document.getElementById('submit_button').disabled >>> = 1;" action="/AndroidPhoneApplications/releases/7661" method="POST" >>> enctype="multipart/form-data"> >>> >>> Which means the !createStage2 has been dropped. >>> >>> (This causes problems because the rest plugin uses !xxxx to specify the >>> method to call in the action class). >>> >>> >>> 2) With the !createStage2 dropped the rest plugin should be calling the >>> create() method in the action class (as per the docs at >>> http://struts.apache.org/2.x/docs/rest-plugin.html), but it doesn't, it >>> calls the execute() method instead. >>> >>> Al. >>> >>> -- >>> ====== >>> Funky Android Limited is registered in England & Wales with the company >>> number 6741909. The registered head office is Kemp House, 152-160 City >>> Road, London, EC1V 2NX, UK. >>> The views expressed in this email are those of the author and not >>> necessarily those of Funky Android Limited, it's associates, or it's >>> subsidiaries. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org >>> For additional commands, e-mail: dev-h...@struts.apache.org >>> >>> >>> >> >> >> >> > > > -- > ====== > Funky Android Limited is registered in England & Wales with the company > number 6741909. The registered head office is Kemp House, 152-160 City > Road, London, EC1V 2NX, UK. > The views expressed in this email are those of the author and not > necessarily those of Funky Android Limited, it's associates, or it's > subsidiaries. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org > For additional commands, e-mail: dev-h...@struts.apache.org > > -- "Hey you! Would you help me to carry the stone?" Pink Floyd --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org For additional commands, e-mail: dev-h...@struts.apache.org