Just a hint: DMI can be dangerous and we think about removing it. 2013/9/23 Christoph Nenning <christoph.nenn...@lex-com.net>: > It seems a little late to join this discussion, but anyway here is what I > think. > > > Per default the framework shows validation errors for simple GET requests. > > The easiest way to work around that is to add "!input" to the url, like > this: > > login!input.action > > You can bookmark that and generate links to the page like that. > > > But I consider that rather ugly. > > > The solution proposed by Lukasz is to use 2 actions: one for GET requests > and another one for POST requests. I didn't think of that before. > > > > Here is what we usually do: > - action.execute() is used for displaying the page (GET requests) > - it returns INPUT (as it is the default for validation errors) > - the INPUT result is mapped to a tile > - enable DMI > - for POST requests the actions provide other methods like > login()/save()/create() > - those methods return a result name like "redisplay" which is mapped to a > actionRedirect result (redirect after POST) > - to invoke the other action methods we use parameter names prefixed with > "method:" > > That way we get nice URLs for GET requests and pages are shown without > validation errors per default. And we can handle the complete page in one > action class. > > > An issue that arises is to properly initialize actions. If validation > errors are present execute() is not invoked, so we use Prepareable to load > data we need to display (or init lists used for <select>s and stuff like > that). But we have to take care that we don't override user input with DB > content in prepare(), so some initializtaion is done in prepare() and some > is done in execute(). > > To avoid that we use AJAX validation which makes actions much simpler. > > > > Regards, > Christoph > > > > >> >> "You cannot forward to actions" >> >> Thanks, that was the idea that was missing from my understanding. >> >> Got it working the way I wanted in a minute :) >> >> Many thanks - appreciated :) >> Serdyn du Toit >> >> >> >> On Mon, Sep 23, 2013 at 8:47 AM, Lukasz Lenart > <lukaszlen...@apache.org>wrote: >> >> > 2013/9/22 Serdyn du Toit <dutoi...@gmail.com>: >> > > What I have now is as follows: >> > > <package name="login" namespace="/admin/login" > extends="default"> >> > > <default-interceptor-ref name="any" /> >> > > <action name="login-form"> >> > > <result name="success">/admin/login/login.jsp</result> >> > > </action> >> > > <action name="login" >> > > class="com.d6.admin.login.AdminUserLoginAction"> >> > > <result > name="input">/admin/login/login-form.htm</result> >> > > <result >> > name="success">/admin/dashboard/dashboard.htm</result> >> > > </action> >> > > </package> >> > > >> > > The following part is just problematic - I'm struggling to find > these >> > > resources. My browser tells me "the requested resources is not >> > available", >> > > but when I hit the actions directly everything works 100% >> > >> > You cannot forward to actions - that what you do right now: <result >> > name="input">.... - changing extension to .htm doesn't change action >> > in a file. You can forward only to static resources (files), actions >> > are logical resources. >> > >> > Remove "struts.action.extension" - stick with default. >> > >> > Check out struts2-blank application and see how it is solved there - >> > example.xml, Login action class, Login.jsp and Login-validation.xml >> > >> > https://svn.apache.org/repos/asf/struts/struts2/trunk/apps/blank/ >> > >> > >> > Regards >> > -- >> > Łukasz >> > + 48 606 323 122 http://www.lenart.org.pl/ >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> > For additional commands, e-mail: user-h...@struts.apache.org >> > >> > > > This Email was scanned by Sophos Anti Virus
--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org