Hm, I guess this is a less intrusive solution for posting
the checkbox array through a page which it is not visible on:
Mike
> I have the following problem with checkbox arrays. I would
> really appreciate clues on what is the best workaround.
>
> PROJECT SETUP
> -
> The situation is this:
> - I have a data entry page flow with multiple pages
> entering data into a form bean stored on the session
> (all the actions share the same form bean).
> - Several pages contain checkboxes so I have to reset
> their corresponding form properties in an overridden
> ActionForm.reset() method.
> - Some of these checkboxes appear on the first page only
> and causes a problem as the form will reset their
> properties when navigating to the second page, but they
> will not be repopulated as they don't have a control on
> this page and therefore will remain cleared.
>
> For simple checkboxes I just put a corresponding
> field on the pages that shouldn't render that
> particular checkbox. The hidden field makes sure the non-
> existing (on this page) checkbox's value is posted through
> to the action and thus repopulated into the form, so it
> will still keep its value despite the reset code.
>
> PROBLEM
> ---
> But, for array checkboxes created with I
> don't succeed with this solution. The solution with the
> hidden field I used for simple checkboxes will only hold
> one value, and thus will only keep one of potentially many
> selections in the checkbox array.
>
> How should this best be solved?
>
> CURRENT WORKAROUND
> --
> At the moment I have implemented a workaround that will only
> reset the checkbox array when populating from a page that
> actually contains the corresponding checkboxes. I do this by
> adding a hidden "flag" field that signals that the page
> contains the checkboxes and I can later use this as a
> conditional in the reset method:
>
> page1.jsp
>
>
>
>
>
>
>
>
> MyActionForm.java:
> public void reset(ActionMapping mapping, HttpServletRequest request)
> {
> if ( request.getParameter("hasPersonCheckboxes") != null )
> personIds = new Long[0];
> }
>
> This way, if page2.jsp doesn't contain a hasPersonCheckboxes
> field, the personIds attribute will not be cleared when
> navigating to this page and will retain its value (given
> that the form bean scope remains on the session).
>
> But, there may be a better and cleaner solution?
> (Sometimes I wish that Struts would include support for
> handling all this checkbox reset stuff. F ex, each rendering
> of Struts' checkbox or multibox tags could make additions to
> some Struts managed hidden field that records what checkboxes
> are placed in the form, and could use this for automagically
> clearing the appropriate properties.)
>
> Mike
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]