2012-03-16 22 views
7

मैं वसंत 3.1.0.RELEASE का उपयोग कर रहा हूँ। मैं अपने आदेश वस्तु में इस क्षेत्र है ...डिफ़ॉल्ट रूप से वसंत चेकबॉक्स को कैसे चेक किया जाए?

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

मेरी स्प्रिंग 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(); 
    } 
} 

उत्तर

7

@ डेव, कुछ कहलाता है: चेकबॉक्स। आप इसके साथ प्रयास कर सकते हैं।

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

मेरी धारणा है कि आपको EventFeed क्लास में "आईडी" और "मान" परिभाषित होना चाहिए।

मैंने स्ट्रिंग [] उपलब्ध सूची और स्ट्रिंग [] चयनित सूची के द्वारा बस कोशिश की। यह आकर्षण की तरह काम करता है। आप भी कोशिश कर सकते हैं।

+0

प्रश्न में मेरा विवरण के अनुसार, मैं प्रत्येक चेकबॉक्स के आस-पास अतिरिक्त HTML रखना चाहता हूं। तो क्या मैं अभी भी HTML का उपयोग कर सकता हूं (प्रश्न में सूचीबद्ध) फॉर्म का उपयोग कर: चेकबॉक्स? अब तक मुझे ऐसा करने का कोई रास्ता नहीं मिला है। – Dave

+0

आपका मतलब है कि आप उस कॉलम के चारों ओर टेबल को एक कॉलम में चेक बॉक्स लेबल और आसन्न कॉलम में चेक बॉक्स के साथ चाहते हैं? – raddykrish

+0

फ़ॉर्म में "तत्व" नामक एक विशेषता है: चेकबॉक्स टैग, जो उनके प्रलेखन द्वारा "एचटीएमएल तत्व निर्दिष्ट करता है जिसका उपयोग प्रत्येक 'इनपुट' टैग को 'चेकबॉक्स' के साथ संलग्न करने के लिए किया जाता है। 'Span' के लिए डिफ़ॉल्ट।" आप इस लिंक में http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.checkboxes में दस्तावेज़ का संदर्भ ले सकते हैं। – raddykrish

5

आप दूसरा नहीं करता है अपनी कक्षा

class User { 
    boolean userEventFeeds = true; 

} 
0

में चयनित डिफ़ॉल्ट गुण सच डालकर कर, मैं दोनों form:checkboxes और form:checkbox एक ही डेटा और पहली काम करता है के साथ की कोशिश की है सकते हैं। (आपके पास वसंत की वही रिलीज है)

ऐसा लगता है कि bug था, जो उनके दावों के बावजूद अभी भी वहां प्रतीत होता है।

6

दिलचस्प बात यह है इस काम करता है:

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

झोननाथन जैसे विशेष क्षेत्र के डिफ़ॉल्ट मान को सेट करना बेहतर अभ्यास है। यदि, किसी भी कारण से, तो आप यह समाधान काम नहीं कर सकते हैं। – theblang

0

मेरी USECASE के लिए (के साथ वस्तु भरा जा रहा लेना देना नहीं है कि एक सूची में सामान पर प्रतिक्रिया), इस कोड काम किया:

(कृपया कि बारे में पता होना यह एक आखिरी सहारा प्रकार का कोड है, अन्य समाधान सबसे अधिक उपयुक्त हैं।)

<%@ 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> 
संबंधित मुद्दे

 संबंधित मुद्दे