Как предотвратить выбор предустановки для selectOneRadio логического значения по умолчанию? - PullRequest
1 голос
/ 16 декабря 2011

В настоящее время у меня есть простое весеннее приложение с простой страницей, подкрепленной простым бобом.Вот соответствующий фрагмент со страницы ...

<h:selectOneRadio id="q1" value="#{controller.formBean.question1}">
    <f:selectItem itemValue="true" itemLabel="Yes"  />
    <f:selectItem itemValue="false" itemLabel="No"  />
</h:selectOneRadio>

А из вспомогательного компонента formBean:

private boolean question1;
public void setQuestion1(boolean question1) {
    this.question1 = question1;
}
public boolean isQuestion1() {
    return question1;
}

И контроллер создает экземпляр компонента (проверено не нуль).

Но это часть проблемы, так как логическое значение при инициализации по умолчанию равно false, этот элемент управления формы всегда имеет предварительно выбранный «ответ по умолчанию» «Нет».Я бы хотел, чтобы пользователь явно выбрал «да» или «нет», поэтому мне нужно убедиться, что переключатель не был предварительно заполнен.

Я попытался преобразовать все поля в логические значения (чтобы я мог представить истину / ложь/ null) но весна рухнула и хотела, чтобы логические значения не были логическими.

У кого-нибудь есть идеи?Я новичок в Spring, и я уверен, что мне здесь не хватает чего-то очень простого.

1 Ответ

2 голосов
/ 16 декабря 2011

Используйте Boolean вместо boolean.Boolean имеет третье «состояние»: null.Я не уверен, что вы имеете в виду, когда вы пытались это сделать, когда «пружина развалилась».

Более чистая альтернатива - вместо этого использовать enum.

public enum Choice {
    Yes, No;
}

public Choice[] getChoices() {
    return Choice.values();
}

с

<h:selectOneRadio id="q1" value="#{controller.formBean.question1}">
    <f:selectItems value="#{data.choices}" />
</h:selectOneRadio>

и используйте

private Choice question1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...