I'd try making your form bean have a String[] for the getter/setter of
the checkbox's value and then name all the checkboxes with the same
name.

HTH,

Matt

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Kelly Clauson
> Sent: Friday, March 28, 2003 4:42 PM
> To: [EMAIL PROTECTED]
> Subject: [displaytag-user] Issues with a checkbox decorator (help)
> 
> 
> I am attempting to use a Decorator to put a checkbox in one 
> column of a table. I am running into a couple of issues, but 
> I don't know if my approach is correct.
> 
> My decorator code looks like this:
> 
> public class CheckboxDecorator extends Decorator {
>    public CheckboxDecorator() {  super();  }
>    public String getNullValue() { return null; }
> 
>    public String getCheckbox() {
>        MyBean bean = (MyBean) getObject();
>       StringBuffer s = new StringBuffer();
>       s.append("<input type=checkbox name=\"verified\" value=\"on:");
>       s.append(getListIndex());
>       s.append("\"");
>       boolean checked = bean.getVerified();
>       if (checked) {
>          s.append(" checked=\"true\"");
>       }
>       s.append("/>");
>       return s.toString();
>    }
> }
> 
> Basically, I'm just returning an html formatted string that 
> contains a checkbox.
> 
> My (simplified) jsp:
> 
> <%@ taglib uri="/WEB-INF/display.tld" prefix="display" %>
> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> 
> <html:form action="/List" name="ListForm" 
> type="path.to.ListForm"> <display:table
>    width="80%"
>    name="elements"
>    scope="session"
>    border="1"
>    cellpadding="5"
>    pagesize="8"
>    export="true"
>    requestURI="list.do"
>    decorator="path.to.CheckboxDecorator">
> 
>    <display:column align="center" property="checkbox" title="Verify"/>
>    <display:column align="center" property="ID"/>
>     ...
> </display:table>
> <html:submit/>
> </html:form>
> 
> And the relevant portion of the form bean:
> 
> public void setVerified(String aVerified) {
>       StringTokenizer s = new StringTokenizer(aVerified, ":");
>       String onoff = s.nextToken();
>       int index = Integer.parseInt(s.nextToken());
>       MyBean bean = (MyBean) mElements.get(index);
>       if (onoff.equals("on")) {
>          bean.setPublished(true);
>       }
>       else {
>          bean.setPublished(false);
>       }
>    }
> 
> 
> The checkbox column is displaying properly. The main problem 
> I'm having is that when I hit the submit button, I expect the 
> setVerified method on the form bean to be called for each box 
> that is checked. This does not happen. The method is only 
> called for the first occurrence of a checked box. Why????
> 
> Another issue is with the Decorator.getListIndex method. I 
> thought this method would return the current object's index 
> in the complete list, but it returns the index on the current 
> page. Just as the getViewIndex method does. Is this a bug or 
> a configuration issue?
> 
> Am I completely on the wrong track in trying to get a 
> checkbox in a column? Has anyone successfully implemented 
> this? I would really appreciate some help. I've been staring 
> at this for quite a while now.
> 
> Thanks,
> 
> Kelly Clauson
> [EMAIL PROTECTED]
> 
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by:
> The Definitive IT and Networking Event. Be There!
> NetWorld+Interop Las Vegas 2003 -- Register today!
> http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en
> _______________________________________________
> displaytag-user mailing list [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/displaytag-user
> 




-------------------------------------------------------
This SF.net email is sponsored by:
The Definitive IT and Networking Event. Be There!
NetWorld+Interop Las Vegas 2003 -- Register today!
http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en
_______________________________________________
displaytag-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/displaytag-user

Reply via email to