To solve this particular scenario, we've org.apache.struts.util.LabelValueBean class. Using this class we can display a Label(say "X") on multibox and send a different value(say "Y") to the server. Hope I'm able to answer your questions.
Thanks, Tarun. On 4/2/06, 王曾wang_zeng <[EMAIL PROTECTED]> wrote: > > hi: > i have a question. in a multibox,the property attribute should be > pointed > to an array in the form bean,and this array will be checked to see if > there exists such a element who's value equals to the value set in the > multibox. my question is how to set the value of multibox which will be > used > to find a match with in the array especially when the multibox's value > dose > not equal to the label displayed on the check box in IE. > > > 2006/4/1, Max Cooper <[EMAIL PROTECTED]>: > > > > 2 things come to mind: > > > > 1) Make sure your ActionForm has the appropriate setter method. It wont > > be setDenyCodes(String value) since there can be many values. IIRC, you > > need a setter that takes a String array as an argument. I could be wrong > > -- do some research to be sure. > > > > 2) Make sure the URL of the submit (when using GET) doesn't get so long > > that IE chops the end off. Check all the boxes (so the URL will be at > > its longest) to test. I think this happens around 4000 characters or so. > > Using a POST avoids this limitation in a reliable manner. > > > > -Max > > > > Tarun Reddy wrote: > > > Hi Vijay, > > > It's working fine now. I've just added a method="GET" attribute to > > > <html:form> tag. It's working perfectly fine. I don't have any idea > how > > this > > > solved the problem. Thanks for all your time. > > > > > > Thanks, > > > Tarun. > > > > > > On 3/31/06, Tarun Reddy <[EMAIL PROTECTED]> wrote: > > > > > >>Thanks Vijay! I've verified the value returned by > > >>request.getParameterValues("denyCodes") even before sending out this > > mail. > > >>I don't have any clue on how to proceed further. I'll try debugging it > > more. > > >> > > >>Thanks, > > >>Tarun. > > >> > > >> > > >>On 3/31/06, vijay venkataraman <[EMAIL PROTECTED]> wrote: > > >> > > >>>Tarun, > > >>>If the value in being rendered is in string array pointed by the > > >>>property it will be rendered with checked attribute set. I know it > > >>>works. > > >>>It is bit weired that the set method is not being called i am not > able > > >>>to find what is happening. Do you see the values coming fine in the > > >>>HttpRequest? > > >>>If you debug and view your HttpRequest - If you have *selected* some > > >>>checkboxes then you should see a parameter by name denyCodes and to > > that > > >>> > > >>>there will be a array containing the selected values in the array. > > Sorry > > >>>i am stuck with something deep and cannot probe any further now. > > Pulling > > >>>the bean util source code along with Struts source code and seeing > what > > >>>happens will give you a clear idea. > > >>> > > >>>Vijay Venkataraman > > >>> > > >>>Tarun Reddy wrote: > > >>> > > >>> > > >>>>Hi Vijay, > > >>>>Thanks for the reply! I had a look at the HTML source generated by > JSP > > >>> > > >>>page > > >>> > > >>>>which contains multibox tag. Here are some sample entries, > > >>>> > > >>>><form name="denyForm" method="post" action="/testingtool/deny.do"> > > >>>> <table> > > >>>> <tr align="center"> <input type="submit" > > >>> > > >>>value="Submit"></tr> > > >>> > > >>>> <tr> <input type="checkbox" name="denyCodes" > > >>>>value="216">216</tr> > > >>>> <tr> <input type="checkbox" name="denyCodes" > > >>>>value="415">415</tr> > > >>>> <tr> <input type="checkbox" name="denyCodes" > > >>> > > >>>value="05">05</tr> > > >>> > > >>>>Let me tell you, <bean:write> tag nested in the <html:multibox> tag > > >>> > > >>>takes > > >>> > > >>>>care of setting this value attirbute to the same as label. The HTML > > >>> > > >>>source > > >>> > > >>>>also proved that this problem is not related to setting value > > >>> > > >>>attribute. > > >>> > > >>>>Second point is, yeah there's a slight confusion in the use of > > multibox > > >>> > > >>>tag. > > >>> > > >>>>In the specs they say that you can make ur checkboxes checked based > on > > >>> > > >>>the > > >>> > > >>>>values present in, string array in the ActionForm. But can you tell > me > > >>>>whether we can make selections among multiple checkboxes and then > send > > >>> > > >>>the > > >>> > > >>>>values of the checked checkboxes to the Action class? I'm surprised > to > > >>> > > >>>see > > >>> > > >>>>that the setter method was never called while submitting the form to > > >>> > > >>>the > > >>> > > >>>>action class. Please suggest me. > > >>>> > > >>>> > > >>>>On 3/31/06, vijay venkataraman <[EMAIL PROTECTED]> wrote: > > >>>> > > >>>> > > >>>> > > >>>>>The struts doc goes like this : > > >>>>> > > >>>>>*Multibox:* > > >>>>>** > > >>>>> > > >>>>>Renders an HTML <input> element of type |checkbox|, whose "checked" > > >>>>>status is initialized based on whether the specified value matches > > one > > >>>>>of the elements of the underlying property's array of current > values. > > >>>>>This element is useful when you have large numbers of checkboxes, > and > > >>>>>prefer to combine the values into a single array-valued property > > >>> > > >>>instead > > >>> > > >>>>>of multiple boolean properties. This tag is only valid when nested > > >>>>>inside a form tag body. > > >>>>> > > >>>>>*WARNING*: In order to correctly recognize cases where none of the > > >>>>>associated checkboxes are selected, the |ActionForm| bean > associated > > >>>>>with this form must include a statement setting the corresponding > > >>> > > >>>*array > > >>> > > >>>>>to zero length in the |reset()| method. > > >>>>>* > > >>>>> > > >>>>>See the rendered html and make sure that check boxes are rendered > > with > > >>>>>the correct name. > > >>>>>I don't see you setting any value to the value attribute of > multibox. > > >>>>>It is the value you set that is posted back. > > >>>>> > > >>>>>I don't know much about bean and iteration tag. > > >>>>> > > >>>>>Regards, > > >>>>>Vijay Venkataraman > > >>>>> > > >>>>> > > >>>>>Tarun Reddy wrote: > > >>>>> > > >>>>> > > >>>>> > > >>>>> > > >>>>>>Hi All, > > >>>>>>I've been wasting my time on one issue pertaining to > <html:multibox> > > >>> > > >>>tag. > > >>> > > >>>>>>I'm writing a code which should generate multiple checkboxes > > >>> > > >>>dynamically > > >>> > > >>>>>> > > >>>>>on > > >>>>> > > >>>>> > > >>>>> > > >>>>>>a JSP page. The JSP should send the checked checkboxes value to > the > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>Action > > >>>>> > > >>>>> > > >>>>> > > >>>>>>class. But it's not sending any values. I've tried many approaches > > >>> > > >>>like > > >>> > > >>>>>>1)initialized all the elements in the String[] to "" in the > reset() > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>method > > >>>>> > > >>>>> > > >>>>> > > >>>>>>2)tried retrieving the checked values using String[] codes= > > >>>>>>request.getParameterValues("denyCodes"); > > >>>>>>None of the above methods worked for me. I'm using Weblogic 8.1and > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>Struts > > >>>>> > > >>>>> > > >>>>> > > >>>>>>1.2.8. I've tried with Struts 1.1 too. Here's my code. > > >>>>>>------------------- > > >>>>>>public class DenyForm extends ActionForm { > > >>>>>> private String[] denyCodes= new String[80]; > > >>>>>> public String[] getDenyCodes(){ > > >>>>>> return denyCodes; > > >>>>>> } > > >>>>>> public void setDenyCodes(String[] denycodes){ > > >>>>>> this.denyCodes = denycodes; > > >>>>>> } > > >>>>>> public void reset(ActionMapping mapping, HttpServletRequest > > >>> > > >>>request) > > >>> > > >>>>>> > > >>>>>{ > > >>>>> > > >>>>> > > >>>>> > > >>>>>> for(int i=0;i<80;i++){ > > >>>>>> denyCodes[i] = ""; > > >>>>>> } > > >>>>>> } > > >>>>>>} > > >>>>>>------------------------denycodes.jsp page is like this, > > >>>>>><html:form action="deny"> > > >>>>>> <table> > > >>>>>> <tr align="center"> <html:submit /></tr> > > >>>>>> <logic:iterate name="denialCodes" id="code"> > > >>>>>> <tr> > > >>>>>> <html:multibox property="denyCodes" > > > >>>>>> <bean:write name="code" /> > > >>>>>> </html:multibox><bean:write name="code"/> > > >>>>>> </tr> > > >>>>>> </logic:iterate> > > >>>>>> </table><br> > > >>>>>></html:form> > > >>>>>>---------------------------------------Action Class is > > >>>>>>public class DenyAction extends Action { > > >>>>>> public ActionForward execute(ActionMapping mapping, ActionForm > > >>> > > >>>form, > > >>> > > >>>>>> HttpServletRequest request, HttpServletResponse > response) > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>throws > > >>>>> > > >>>>> > > >>>>> > > >>>>>>Exception{ > > >>>>>> > > >>>>>> HttpSession session = request.getSession(); > > >>>>>> DenyForm denyForm = (DenyForm)form; > > >>>>>> String[] codes = denyForm.getDenyCodes(); > > >>>>>>// String[] codes = request.getParameterValues > > >>> > > >>>("denyCodes"); > > >>> > > >>>>>> log.debug("codes array length is:"+codes.length); > > >>>>>> session.setAttribute("denyCodes",codes); > > >>>>>> return mapping.findForward("success"); > > >>>>>> } > > >>>>>>} > > >>>>>>-------------------------------------------------- > > struts-config.xmlentry > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>is > > >>>>> > > >>>>> > > >>>>> > > >>>>>>like this > > >>>>>> > > >>>>>> <form-bean name="denyForm" type="tars.form.DenyForm " /> > > >>>>>> > > >>>>>> <action path="/deny" type="tars.action.DenyAction" > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>name="denyForm"> > > >>>>> > > >>>>> > > >>>>>> <forward name="success" path="/query.jsp" /> > > >>>>>> </action> > > >>>>>>------------------------------------------------------------------ > > >>>>>> > > >>>>>>codes.length is always returning 0 as the length. I've added some > > >>> > > >>>debug > > >>> > > >>>>>>statements in the ActionForm's set method to see whether it's > being > > >>>>>> > > >>>>>> > > >>>>> > > >>>>>called > > >>>>> > > >>>>> > > >>>>> > > >>>>>>or not. To my surprise it was never called. That's what baffling > me. > > >>> > > >>>This > > >>> > > >>>>>> > > >>>>>is > > >>>>> > > >>>>> > > >>>>> > > >>>>>>really urgent. I would really appreciate if someone could help me > > >>> > > >>>out. > > >>> > > >>>>>>Thanks, > > >>>>>>Tarun. > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>> > > > > > >>>>>------------------------------DISCLAIMER------------------------------ > > >>>>>This message is for the named person's use only. It may contain > > >>>>>confidential, proprietary or legally privileged information. No > > >>>>>confidentiality or privilege is waived or lost by any > > mistransmission. > > >>>>> > > >>>>>If you receive this message in error, please immediately delete it > > and > > >>> > > >>>>>all copies of it from your system, destroy any hard copies of it > and > > >>>>>notify the sender. You must not, directly or indirectly, use, > > >>> > > >>>disclose, > > >>> > > >>>>>distribute, print, or copy any part of this message if you are not > > the > > >>> > > >>>>>intended recipient. > > >>>>> > > >>>>>Lisle Technology Partners Pvt. Ltd. and any of its subsidiaries > each > > >>>>>reserve the right to monitor all e-mail communications through its > > >>>>>networks. > > >>>>> > > >>>>>Any views expressed in this message are those of the > > >>>>>individual sender, except where the message states otherwise and > the > > >>>>>sender is authorized to state them to be the views of any such > > entity. > > >>> > > > >>>>>--------------------------------------------------------------------- > > >>>>>To unsubscribe, e-mail: [EMAIL PROTECTED] > > >>>>>For additional commands, e-mail: [EMAIL PROTECTED] > > >>>>> > > >>>>> > > >>>>> > > >>>>> > > >>> > > >>> > > > >>>------------------------------DISCLAIMER------------------------------ > > >>>This message is for the named person's use only. It may contain > > >>>confidential, proprietary or legally privileged information. No > > >>>confidentiality or privilege is waived or lost by any > mistransmission. > > >>> > > >>>If you receive this message in error, please immediately delete it > and > > >>>all copies of it from your system, destroy any hard copies of it and > > >>>notify the sender. You must not, directly or indirectly, use, > disclose, > > >>>distribute, print, or copy any part of this message if you are not > the > > >>>intended recipient. > > >>> > > >>>Lisle Technology Partners Pvt. Ltd. and any of its subsidiaries each > > >>>reserve the right to monitor all e-mail communications through its > > >>>networks. > > >>> > > >>>Any views expressed in this message are those of the > > >>>individual sender, except where the message states otherwise and the > > >>>sender is authorized to state them to be the views of any such > entity. > > >>> > > >>>--------------------------------------------------------------------- > > >>>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] > > > > > >