That helps a lot.  Thank you Ben!!!
 
 

________________________________

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Ben
Gunter
Sent: Friday, May 09, 2008 7:16 AM
To: Stripes Users List
Subject: Re: [Stripes-users] Repopulating Drop-Downs after Validation
Error


What you're doing is just fine. You just need to move your list
population code somewhere else so that it will always fire, even if
validation fails. You can do that in one of two ways that I know of.


1.      Lazy initialization in your getter. E.g.:
        
        private List<Thing> things;
        public List<Thing> getThings() {
                if (things == null) {
                        things = loadThings();
                }
                return things;
        }
2.      Use a @Before method to populate the list before validation
runs. The advantage to this approach is that if you have certain events
that fire that do not need to populate the list, then you can disable
list population for those events easily. E.g.:
        
        private List<Thing> things;
        public List<Thing> getThings() { return things; }
        
        @Before(stages=LifecycleStage.BindingAndValidation,
on={"!cancel"})
        public void loadThings() {
                // do whatever you need to do
        }

The first option is more straightforward (IHMO), and the second is more
flexible. Either one should fix your problem.

-Ben

Asleson, Ryan wrote: 

         
        Hello,
         
        I'm using Stripes 1.5 Beta on Java 6.
         
        The general pattern I've been following in the application is
that every ActionBean has a view() method which is annotated with the
@DefaultHandler annotation, and the view() method is responsible for
populating the ActionBean with anything needed to display the page.
Usually the view() method has to grab some data from the database for
the page to be displayed.
         
        This has worked well so far but I've run into a problem.  I have
a page that has a few text boxes and a drop-down select box.  The List
that populates the select box is retrieved from the database by the
view() method.  When a @Validation fails, the text boxes are populated
correctly (with the information, right or wrong, that the user entered)
but the select box is empty and has no options -- obviously the view()
method did not have chance to repopulate the list on the ActionBean.
         
        How do I get around this?  In the old Struts 1.x world (blah), a
Tiles controller backed every JSP and was responsible for populating the
page with info from a database.  
         
        Is my pattern of having every ActionBean with a view() method a
poor pattern?  
         
        I'm wondering if the <stripes:useActionBean> tag is what I need
to use, but I'm not sure how I should fit everything together.
         
        Thanks!!
         
        -Ryan
         
         

        This e-mail message is being sent solely for use by the intended
recipient(s) and may contain confidential information. Any unauthorized
review, use, disclosure or distribution is prohibited. If you are not
the intended recipient, please contact the sender by phone or reply by
e-mail, delete the original message and destroy all copies. Thank you.
        
        
________________________________


        
------------------------------------------------------------------------
-
        This SF.net email is sponsored by the 2008 JavaOne(SM)
Conference 
        Don't miss this year's exciting event. There's still time to
save $100. 
        Use priority code J8TL2D2. 
        
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/j
avaone
        
________________________________


        _______________________________________________
        Stripes-users mailing list
        [email protected]
        https://lists.sourceforge.net/lists/listinfo/stripes-users
          


This e-mail message is being sent solely for use by the intended recipient(s) 
and may contain confidential information.  Any unauthorized review, use, 
disclosure or distribution is prohibited.  If you are not the intended 
recipient, please contact the sender by phone or reply by e-mail, delete the 
original message and destroy all copies. Thank you.
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users

Reply via email to