user3736748
user3736748

Reputation: 205

PrimeFaces default selection on radio buttons

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

Answers (1)

dehrg
dehrg

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

Related Questions