Форма пружины: радиокнопки, выбранные на странице загрузки - PullRequest
0 голосов
/ 05 июня 2018
<form:form method="post" action="/changeEnabledResource" modelAttribute="user">
    <c:forEach items="${user.resources}" var="resource">
        <form:radiobutton path="resources" 
                          value="${resource}" 
                          label="${resource.name}" 
                          checked="${resource.enabled ? 'checked' : ''}/>
    </c:forEach>
    <input type="submit" value="Submit"/>
</form>

Класс ресурса:

public class Resource {
    private Long id;
    private String name;
    private boolean enabled;

    //getters setters
}

Класс пользователя:

public class User {
    private List<Resource> resources;
    ....
    //rest of code
}

С приведенным выше кодом все формы: радио-кнопки проверили = "проверено", так что последний являетсявсегда проверяется при загрузке формы.Отправка работает правильно, и она заменяет правильную на включенную, а остальные на не включенную (класс обслуживания обрабатывает это).Но когда страница загружается, все радио-кнопки проверили = "проверено".

Почему это происходит, или как правильно сделать так, чтобы у активированного ресурса был установлен переключатель?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Установите выбранное значение в отдельном свойстве:

public class User {
    private int selectedResourceId;
    private List<Resource> resources;
    ....
    //rest of code
}


...
<form:radiobutton path="selectedResourceId" 
                  value="${resource.id}" 
                  label="${resource.name}"/>
...

При загрузке страницы инициализируйте selectedResourceId (на основе флага resource, где enabled равен true), чтобытег form:radiobutton знает, какой из них выбран при визуализации страницы.

После отправки формы перейдите в другом направлении и установите соответствующий флаг resource.enabled на основе selectedResourceId.

0 голосов
/ 06 июня 2018

Ответ на этот вопрос - НЕ использовать теги вида radiobutton (s), поскольку они, очевидно, работают не очень хорошо.Я еще не нашел ни одного хорошего примера где-либо, использующего этот тег.Моим решением было просто использовать простые теги ввода HTML и использовать @RequestParam в методе контроллера, который будет передавать только значение переключателя, который отмечен.И я могу легко использовать $ {resource.enabled?'флажок': ''}, чтобы убедиться, что выбран правильный.

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