Reputation: 169
I have a DropDownChoice like below:
final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() {
public Object getDisplayValue(Term object) {
return object.getIdentifier();
}
public String getIdValue(Term object, int index) {
return object.getId().toString();
}
});
I want to have "Choose All" instead of "Choose one". How can I do that?
Upvotes: 10
Views: 10909
Reputation: 59
In older Wicket versions (maybe also works in newer versions) you can do the following (tested in Wicket 1.3.7):
Dropdownchoice dropdown = new DropDownChoice("dropdown", list)
{
@Override
protected CharSequence getDefaultChoice(Object selected)
{
return "<option value=\"\">" + "MY placeholder text" + "</option>";
}
};
dropdown.setNullValid(true);
Maybe you want to add additional stuff to the option-tag depending on the object "selected". Take a look at the super.getDefaultChoice(Object selected) method for the default implementation.
Upvotes: 0
Reputation: 1844
I used the two methods:
AbstractSingleSelectChoice#getNullKeyDisplayValue(), AbstractSingleSelectChoice#getNullValidDisplayValue()
which are both accessed through DropDownChoice
@Override
protected String getNullKeyDisplayValue() {
return "Choose All";
}
and if the DropDownChoice has had setNullValid(true) the method:
@Override
protected String getNullValidDisplayValue() {
return "Choose All";
}
Upvotes: 0
Reputation: 306
I'm using wicket 6.14 (not sure which version it was introduced) and you can just override getNullKeyDisplayValue()
, so you would have this:
final DropDownChoice<Term> terms = new DropDownChoice("terms", new Model<Term>(), new Model(new ArrayList(termDao.findAll())), new IChoiceRenderer<Term>() {
@Override
protected String getNullKeyDisplayValue() {
return "Choose All";
}
public Object getDisplayValue(Term object) {
return object.getIdentifier();
}
public String getIdValue(Term object, int index) {
return object.getId().toString();
}
});
Upvotes: 6
Reputation: 91
I tried Goli's suggestion under wicket 6.4 and it doesn't work. For me the right way is:
It is not necessary to set terms.setMarkupId("termsDDC"); It will work without it
Exactly as above, if you have a form on the panel (wicket:id="form") and a DropDownChoice on the form (wicket:id="terms"), it doesn't matter, you should name .properties file as mypanel.properties
In the property file write: form.terms.null=Choose All or form.terms.nullValid=Empty, if the dropdown has setNullValid(true)
Upvotes: 9
Reputation: 169
Set a markup id for your DropDownChoice.: terms.setMarkupId("termsDDC");
Create a .properties
file for your form/panel/page. For example: mypanel.properties
In the property file write: termsDDC.null=Choose All
Ref: https://cwiki.apache.org/WICKET/dropdownchoice.html
Upvotes: 6