yes, I wanted to say that the factory method/constructor should contain only the mandatory data because the first example used .for(attrName).value(attrValue)... which can lead to missing name or value and runtime exceptions (unless you provide default values for those :-) )
while on the topic - what about remove() ? with override I'll be able to set the value to "" but what if I want to remove it completely ? On Wed, Jun 8, 2011 at 3:10 PM, Martijn Dashorst <[email protected]> wrote: > You can still use the constructors, nobody is taking that away. The > idea of these static methods is that they convey meaning > better—enhancing the readability. > > add(new TextField("name", > new PropertyModel<String>(personModel, "name")) > .add(new AttributeModifier("class", "foo") > .setEditMode(EditMode.OVERWRITE) > .setSeparator(" ") > .setAddAttributeIfNotExists(true))); > > versus > > add(new TextFIeld("name", > new PropertyModel<String>(personModel, "name")) > .add(AttributeModifier.overwrite("class", "foo"))); > > Martijn > > On Wed, Jun 8, 2011 at 2:52 PM, tetsuo <[email protected]> wrote: >> I'd prefer calling the constructor instead of static methods. It makes >> it clear that you are creating a new instance, and how you could >> extend the class if you needed to. >> >> Oh, and 'for' is a reserved keyword :) >> >> Tetsuo >> >> >> >> On Wed, Jun 8, 2011 at 9:02 AM, Martijn Dashorst >> <[email protected]> wrote: >>> On Wed, Jun 8, 2011 at 1:02 PM, James Carman >>> <[email protected]> wrote: >>>> What about the separator? >>> >>> I'm thinking of ditching the separator as a constructor parameter, and >>> defaulting to ' ' (space). Is there anyone who uses any other value >>> for the separator? The attribute modifier will have a setter for the >>> separator, so that you can do AttrbuteModifier.append("onclick", >>> "return false;").setSeparator(";"); >>> >>> As for the fluent api... we can add that as a bonus. I'd like to keep >>> the shorthand for AttributeModifier.append/prepend/overwrite >>> >>> Might I suggest the following fluent api: >>> >>> AttributeModifier.for("class").overwrites().value("error"); >>> AttributeModifier.for("class").appends().value(Model.of("error")); >>> AttributeModifier.for("onclick").prepends().value("if(!confirm('Sure?')) >>> return false;'); >>> >>> Or perhaps: >>> >>> AttributeModifier.for("class").puts("error"); >>> AttributeModifier.for("class").appends(Model.of("error")); >>> AttributeModifier.for("onclick").prepends("if(!confirm('Sure?')) >>> return false;'); >>> >>> Martijn >>> >>> -- >>> Become a Wicket expert, learn from the best: http://wicketinaction.com >>> >> > > > > -- > Become a Wicket expert, learn from the best: http://wicketinaction.com > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com
