Reputation: 205
I have a field one radio button:
xhtml:
<div class="col-md-4">
<p:selectOneRadio id="gender"
value="#{oneGoBean.gender}" required="true"
requiredMessage="Gender Required">
<f:selectItems value="#{oneGoBean.gender}" />
</p:selectOneRadio>
</div>
bean:
import javax.faces.model.SelectItem;
private ArrayList<SelectItem> gender;
public final ArrayList<SelectItem> getGender() {
return gender;
}
public final void setGender(final ArrayList<SelectItem> gender) {
this.gender = gender;
}
public final void loadGender() {
gender = new ArrayList<SelectItem>();
gender.add(new SelectItem("M", "Male"));
gender.add(new SelectItem("F", "Female"));
}
During loadup the arraylist is being populated by the 2 genders. Problem is, there is no default value on the web page. Both radio buttons are not selected. Anyone knows why, I want one button to be selected by default (male)?
Upvotes: 1
Views: 19716
Reputation: 1741
You are mapping the value of the radio button to the list of values, but it should be mapped to a single value. Something like:
xhtml:
<div class="col-md-4">
<p:selectOneRadio id="gender"
value="#{oneGoBean.gender}" required="true"
requiredMessage="Gender Required">
<f:selectItems value="#{oneGoBean.genderList}" />
</p:selectOneRadio>
</div>
bean:
import javax.faces.model.SelectItem;
private ArrayList<SelectItem> genderList;
private String gender = "M"; //give the default value
public final ArrayList<SelectItem> getGenderList() {
return genderList;
}
public final void setGenderList(final ArrayList<SelectItem> genderList) {
this.genderList = genderList;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public final void loadGender() {
genderList = new ArrayList<SelectItem>();
genderList.add(new SelectItem("M", "Male"));
genderList.add(new SelectItem("F", "Female"));
}
Upvotes: 4