Как сделать так, чтобы пружинные флажки были отмечены по умолчанию? - PullRequest
9 голосов
/ 16 марта 2012

Я использую Spring 3.1.0.RELEASE.У меня есть это поле в моем объекте команды ...

public Set<EventFeed> getUserEventFeeds() {
    return this.userEventFeeds;
}

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

<form:form method="Post" action="eventfeeds.jsp" commandName="user">
    ...
        <c:forEach var="eventFeed" items="${eventFeeds}">
        <tr>
            <td><form:checkbox path="userEventFeeds" value="${eventFeed}"/></td>
            <td>${eventFeed.title}</td>
        </tr>
        </c:forEach>
    ...

Однако элементы не проверяются по умолчанию, если они есть в наборе.Как мне это сделать?Вот связующее, которое я использую в своем классе контроллеров ...

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(EventFeed.class, new EventFeedEditor());
}

private class EventFeedEditor extends PropertyEditorSupport {
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        setValue(eventFeedsDao.findById(Integer.valueOf(text)));
    }

    @Override
    public String getAsText() {
        return ((EventFeed) getValue()).getId().toString();
    }
}

Ответы [ 5 ]

7 голосов
/ 20 июля 2012

Интересно, это работает:

<form:checkbox path="services" value="${type}" checked="checked"/>
7 голосов
/ 17 марта 2012

@ Дейв, есть нечто, называемое формой: checkBoxes.Вы можете попробовать с этим.

<form:checkboxes path="userEventFeeds" items="${eventFeeds}" itemLabel="id" itemValue="value"/>

Я предполагаю, что в классе EventFeed должны быть определены "id" и "value".

Я только что попробовал это, используя String [] availableList и String []selectedList.Это работает как шарм.Вы также можете попробовать.

6 голосов
/ 17 марта 2012

Вы можете сделать это, поместив выбранное свойство по умолчанию в ваш класс

class User {
   boolean userEventFeeds = true;

}
0 голосов
/ 13 декабря 2017

Для моего варианта использования (реагирование на вещи в списке, которые не имеют ничего общего с заполняемым объектом), этот код работал:

(Обратите внимание, что это код последней инстанции,другие решения, скорее всего, лучше подходят.)

<%@ taglib prefix="jstl" uri="http://java.sun.com/jsp/jstl/core" %>
<jstl:forEach var="listObject" items="${someList}">
  <jstl:if test="${listObject.active}">
    <form:checkbox path="active" checked="checked"/>
  </jstl:if>
  <jstl:if test="${!listObject.active}">
    <form:checkbox path="active"/>
  </jstl:if>
</jstl:forEach>
0 голосов
/ 10 июля 2012

Я пробовал и form:checkboxes, и form:checkbox с одинаковыми данными, и первое работает, второе - нет. (Та же версия Spring у вас есть)

Похоже, была ошибка , которая, несмотря на их утверждение, кажется, все еще там.

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