There ya go! I knew you'd see my problem ;-)
So I could have a form that contains:
String[] checkedItemsRender; // Rendered collection
String[] checkedItemsSubmit; // Submitted collection
LabelValueBean[] pageItems; // data/id to show in form
Then the form takes the checkedItemsRender and creates hidden fields in the form for
each "value" contained in this array. Then using multibox, the checkedItemsSubmit
array creates checked/unchecked boxes using the value from the pageItems collection
and prints out the label from the pageItems collection too.
When the form gets submitted, I have a String[] checkedItemsRender that have only the
rendered collection of checked values, String[] checkedItemsSubmit that have only the
submitted checked data items and the pageItems is of no importance since it is used
only for display purposes.
During each submission (regardless if its to save the current page or jump to a
particular page (prev/next)), the logic would then be:
Add items from checkedItemsSubmit String[] that do not already exist in
checkedItemsRender and then remove from checkedItemsRender those which do not exist in
checkedItemsS. The result would be in checkedItemsRender and checkedItemsSubmit can
be cleared as it is no longer of importance.
I can then start the process over again but each time, I just need to make sure that
whatever values are in checkedItemsRender are replicated into checkedItemsSubmit prior
to rendering the form in my JSP.
The great thing about the above is that if I want to handle all the above logic in a
seperate form outside my "session-scoped" search form I can and this form can be
request/session scoped and in either case it will work and behave the same. Will work
and lend itself very well to our application since we use this functionality for a lot
of popup listboxes the user can select from and close.
Let me know if you see any holes in this because I haven't tested it but sounds like
it might work ;-)
----- Original Message -----
From: [EMAIL PROTECTED]
To: Struts Users Mailing List
Sent: Wednesday, June 16, 2004 4:35 PM
Subject: Re: Resultsets and multi-check forms
Ah ha. I think I just understood the real problem; each subsequent submission of
the form wipes out the current collection of selected checkboxes. If that's your
problem, then I believe you're going to have to modify the way you're modelling the
collection of as well as the behavior of the accessor/mutator. In Teds example, the
Multibox is backed by a String[], however, you're probably going to have to back it
with a Collection, allowing you to grow/shrink as your user selects/deselects.
Dennis
Dennis Graham/EvergreenFunds
06/16/2004 04:22 PM
To "Struts Users Mailing List" <[EMAIL PROTECTED]>
cc
Subject Re: Resultsets and multi-check formsLink
Sounds like you're describing a struts Multibox:
http://jakarta.apache.org/struts/userGuide/struts-html.html#multibox
Ted Husted has a nice intro here:
http://www.jguru.com/faq/view.jsp?EID=925277
Dennis
"Chris Cranford" <[EMAIL PROTECTED]>
06/16/2004 04:06 PM Please respond to
"Struts Users Mailing List" <[EMAIL PROTECTED]>
To "Struts Users Mailing List" <[EMAIL PROTECTED]>
cc
Subject Re: Resultsets and multi-check forms
Sort-of Yes.
We never really "persist" what is selected to any layer beyond the form because
we're only gathering attributes that which are provided to our "search" action once
all the selectable attributes.
So from a technical use-case perspective I understand that:
1. Form session scoped for simplicity with collection of record_ids (initially empty)
2. Go to database to get records (!-10) since page requested is initially 1
3. Skip preselection step since record_ids collection.size() == 0
4. Render Form
5. User selects items 1 and 3 and submits form via next page link
6. Since record_ids collection size() == 0, populate collection with selections 1
and 3.
7. Go to database to get records (11-20) since page requested is 2
8. Loop through collection to preselect -- again nothing done here
9. Render Form
10. User selects 15 and submits via next page link.
Here is where I get tripped up because in this case I would just need to add 15 to
the selection array in my form, but technically it is possible then that once they
view results 21-30, hit prev page I should show 15 as selected. If they unselect 15
and either dont select anything or select another record, how do I track this?
Maybe I'm creating my form incorrectly using the wrong type of tag to manage my
selection list/boxes. Sorry, just been up too long without sleep and this is probably
something very trivial that I'm overlooking.
Thanks in advance!
----- Original Message -----
From: [EMAIL PROTECTED]
To: Struts Users Mailing List
Sent: Wednesday, June 16, 2004 3:42 PM
Subject: Re: Resultsets and multi-check forms
You might want to re-present the problem. When I read your email, it seemed like
you were describing a typical use-case:
1. Get data from a persistent store
2. Populate form. If attribute indicates "selected", preselect checkbox
3. Render form (allowing user to edit)
4. Persist edits.
Dennis
"Chris Cranford" <[EMAIL PROTECTED]>
06/16/2004 03:35 PM Please respond to
"Struts Users Mailing List" <[EMAIL PROTECTED]>
To <[EMAIL PROTECTED]>
cc
Subject Re: Resultsets and multi-check forms
I haven't seen any comments on this .. any ideas?
> To broaden the prior discussion on resultset caching, I'd like to also
ping
> the group on the concept of being able to have this "resultset" of data
and
> paging through it but extendeding it to where a checkbox exists for each
> viewable record. I need to be able to pre-select values from a database
> ahead of time based on past settings and permit them to page through the
> resultset setting all their new values to finally accepting those and
> writing them back to the database when the user hits the "Save" button.
---------------------------------------------------------------------
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]
------------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]