hi all,

i need two checkboxes in each row of a table. so thats no problem at all, but if
i sort the table all the selected checkboxes are unset. i also have a textfield
in each row and if i enter some text in the field, it will stay like it should.

does anybody know how i can store the state of the boxes?

i have tried to code my own checkbox component because i need to pass a short
value and not a boolean one. if the short value is 1 it should set the box to
selected and if the value is 0 it should set false.


heres the code (bad code). some lines are from the textfield component.

public abstract class SbbsWebCheckbox extends Checkbox {

    public abstract IBinding getValueBinding();

    public String readValue() {
        Short value = (Short) getValueBinding().getObject("value", Short.class);
        if (value != null)
            System.out.println("###############READValue  " + 
value.shortValue());
        else
            System.out.println("###############READValue  00000000000000000" );
        if (value == null)
            return "0";
        else
            return value.toString() ;
    }

    public void updateValue(String value) {
        getValueBinding().setObject(value);
        System.out.println("#UPDATEVALUE#######################VALUE  " + 
value);
        if (value.equals("0")) {
            setSelected(false);
        }
        else if (value.equals("1")) {
            setSelected(true);
        }
        else if (value.equals("on")) {
            setSelected(true);
        }
    }
    
    
    
    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
        String value;
        IForm form = getForm(cycle);
                boolean rewinding = form.isRewinding();
                
// If the cycle is rewinding, but the form containing this field is not,
        // then there's no point in doing more work.
        if (!rewinding && cycle.isRewinding())
            return;
        
        // Used whether rewinding or not.
        String name = form.getElementId(this);
        
        if (rewinding) {
            String param = cycle.getRequestContext().getParameter(name);
            System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXX param " + param);
            try {
                value = param;
                if (value != null)
                    updateValue(value);
                return;
            }
            catch (Exception e) {
            }
        }

        writer.beginEmpty("input");
        writer.attribute("type", "checkbox");

        writer.attribute("name", name);

        if (isDisabled())
            writer.attribute("disabled", "disabled");

        value = readValue();
        System.out.println("RENDER#################### " + value);
        if (value != null) {
                updateValue(value);
        }
        
        if (isSelected())
            writer.attribute("checked", "checked");

        renderInformalParameters(writer, cycle);

        writer.closeTag();
    }
    
    
    /*public abstract void setValue(Short value);    
    
    public abstract Short getValue();    
    */
    
    protected void beforeCloseTag(IMarkupWriter writer, IRequestCycle cycle) {
        // Do nothing.
    }


the .page file: (only the important part)
.......
.......
<parameter name="selected" 
        type="boolean"
        required="yes" 
        direction="form">
    <description>
    The property read and updated by the Checkbox.
    </description>
  </parameter>
  
  <parameter name="value" type="java.lang.Short" required="yes" 
direction="form"/>
  
  <parameter name="disabled" type="boolean" direction="in">
    <description>
    If true, then the checkbox will be disabled and any input from the checkbox
    will be ignored.
    </description>
  </parameter>
  
  <reserved-parameter name="type"/>
  <reserved-parameter name="checked"/>
  <reserved-parameter name="name"/>
  <reserved-parameter name="value"/>
  
  <property-specification name="name" type="java.lang.String"/>
  <property-specification name="form" type="org.apache.tapestry.IForm"/>




thanks for your help!!

regards

sebastian


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to