2012-03-16 22 views
7

私は春3.1.0.RELEASEを使用しています。私はすべての可能なイベントフィードのチェックボックスのリストを表示したい、...私のコマンドオブジェクトに私の春のJSPページでデフォルトでスプリングチェックボックスをチェックする方法は?

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

をこのフィールドを持っているし、ユーザーが自分のセット内の1つを持っている場合は、チェックボックスをチェックしています。私は、各チェックボックスの周りにフォーマットするいくつかの特別なHTMLを持つようにしたいので、私は1つがセット内にある場合の項目はデフォルトでチェック取得されていない、しかし...

<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(); 
    } 
} 

答えて

7

@Dave、フォーム:checkBoxesというものがあります。あなたはそれを試すことができます。

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

ここでは、「id」と「value」をEventFeedクラスで定義する必要があります。

Iは、単なる文字列[] availableListと文字列[] selectedListを有することにより、これを試みました。それは魅力のように働く。試してみることもできます。

+0

私の説明では、各チェックボックスの周りに追加のHTMLを入れたいと思います。だから、私はまだフォームの:チェックボックスを使用して(質問に記載されている)HTMLを引き出すことができますか?これまで私はそれをする方法を見つけていない。 – Dave

+0

あなたが1列と隣接する列のチェックボックスにチェックボックスのラベルとそのチェックボックスの周りのテーブルをしたいわけ? – raddykrish

+0

形で「要素」と呼ばれる属性があります:彼らのドキュメントで言うチェックボックスタグは、「 『のチェックボックス』タイプと 『スパン』にデフォルト各 『入力』タグを囲むために使用されるHTML要素を指定します。」あなたはここで、このリンクでhttp://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.checkboxesのドキュメントを参照してくださいすることができます。 – raddykrish

5

あなたは、私は2番目にはない、同じデータおよび最初の作品でform:checkboxesform:checkboxの両方を試してみたあなたのクラスで真

class User { 
    boolean userEventFeeds = true; 

} 
0

を選択し、デフォルトのプロパティを置くことによってこれを行うことができます。 (あなたが持っている春の同じリリース)

彼らの主張にもかかわらず、まだそこにあると思われる、bugがあったように見えます。

6

は、興味深いことに、この作品:私のユースケースについては

<form:checkbox path="services" value="${type}" checked="checked"/> 
+0

Jhonathanのような特定のフィールドのデフォルト値を設定することをお勧めします。どんな理由であれ、この解決法が機能しない場合、あなたはできません。 – theblang

0

を(充填されたオブジェクトとは何の関係もありませんリスト内のものに反応し)、このコードが働いた:

(ことに注意してください。これは最後の種類のコードですが、他のソリューションが最も適しています)。

<%@ 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> 
関連する問題