You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@click.apache.org by WarnerJan Veldhuis <wa...@qprcostcontrol.com> on 2009/04/14 14:32:02 UTC

Label in FormTable

Hi list,

I am using a FormTable with FieldColumns. If I set the FieldColum to use
a Label as a field, the value is not rendered, but the name is. Digging
into the source shows why: the Label renders the label only (not the
valueobject). If the label is not set, the name is rendered.
(Field#getLabel() ). As this may sound logical, this behaviour is not
working well in FieldColumns. The FieldColumn will set the valueobject
to whatever getProperty(Object row) returns. When done on a Label, that
value gets ignored. 

If I change the Field in FieldColumn to TextField instead of Label the
code works as expected. (Needless to say I don't need a textbox here,
just plain text). Setting the field to NULL in FieldColumn will generate
a NPE, even though FieldColumn allows NULL for field:

FieldColumn.java#renderTableDataContent(Object, HtmlStringBuffer,
Context, int)
if (field == null) {
  super.renderTableDataContent(row, buffer, context, rowIndex);
  return;
}


What can I use in FieldColumn to show plain text? And are my
expectations correct, and is a bug born?

Cheers,

WarnerJan

Re: Label in FormTable

Posted by WarnerJan Veldhuis <wa...@qprcostcontrol.com>.
While typing the previous email, I was thinking of creating my own Field
to do this, so here we go: a PlainText field. Included if anyone needs.

Cheers,

WarnerJan


import org.apache.click.control.Field;
import org.apache.click.util.HtmlStringBuffer;

public class PlainText extends Field {

    private String text;

    public PlainText() {
        this.text = "";
    }

    public PlainText(String text) {
        this.text = text;
    }

    public String getLabel() {
        return text;
    }

    public void setLabel(String label) {
        this.text= label;
    }

    public String getValue() {
        return text;
    }

    public void setValue(String value) {
        this.text = value;
    }

    public Object getValueObject() {
        return text;
    }

    public void setValueObject(Object object) {
        this.text = object== null ? "" : object.toString();
    }

    public void render(HtmlStringBuffer buffer) {
        buffer.append(text);
    }
}





On Tue, 2009-04-14 at 14:32 +0200, WarnerJan Veldhuis wrote:

> Hi list,
> 
> I am using a FormTable with FieldColumns. If I set the FieldColum to
> use a Label as a field, the value is not rendered, but the name is.
> Digging into the source shows why: the Label renders the label only
> (not the valueobject). If the label is not set, the name is rendered.
> (Field#getLabel() ). As this may sound logical, this behaviour is not
> working well in FieldColumns. The FieldColumn will set the valueobject
> to whatever getProperty(Object row) returns. When done on a Label,
> that value gets ignored. 
> 
> If I change the Field in FieldColumn to TextField instead of Label the
> code works as expected. (Needless to say I don't need a textbox here,
> just plain text). Setting the field to NULL in FieldColumn will
> generate a NPE, even though FieldColumn allows NULL for field:
> 
> FieldColumn.java#renderTableDataContent(Object, HtmlStringBuffer,
> Context, int)
> if (field == null) {
>   super.renderTableDataContent(row, buffer, context, rowIndex);
>   return;
> }
> 
> 
> What can I use in FieldColumn to show plain text? And are my
> expectations correct, and is a bug born?
> 
> Cheers,
> 
> WarnerJan

WarnerJan Veldhuis

QPR CostControl BV
Clarissenhof 15
4133 AB Vianen
Tel: +31(0)347 355023
Helpsdesk: +31(0)347 355027