Pytanie : Wiążący Wybiórka (Wielokrotność)

Cześć Ekspert.

I am kłopot gdy próbować lista z wybiórka (wielokrotność).

The klasowy jednostka::
1:
2:
3:
4:
społeczeństwo klasowy Reżim uprawomocniać Serializable {
	intymny List cancerTypes;
} 


The jsp:
1:
2:
3:
							


I am the wybierać pudełko zaludniać z wszystkie rzecz w $ {cancerTypes}, ale the rzecz spisywać w regimen.cancerTypes zaznaczać jako *selected*, także gdy przedkładać the forma I być getting
the w BindException (błąd):
1:
2:
3:
org.springframework.validation.BeanPropertyBindingResult: (1) błąd
Śródpolny błąd w przedmiot "reżim" na śródpolny "cancerTypes": odrzucony wartość [[Ljava.lang.String; @4338fa]; kod [typeMismatch.regimen.cancerTypes, typeMismatch.cancerTypes, typeMismatch.java.util.List, typeMismatch]; argument [org.springframework.context.support.DefaultMessageSourceResolvable: kod [regimen.cancerTypes, cancerTypes]; argument []; brak wiadomość [cancerTypes]]; brak wiadomość [Nie Udać Się wartość nieruchomości typ [java.lang. Sznurek []] wymagany typ [java.util. Lista] dla majątkowy "cancerTypes"; gniazdować wyjątek być java.lang.IllegalArgumentException: Móc wartość typ [java.lang. Sznurek] wymagany typ [com.oncozoom.protocol.entities.CancerType] dla majątkowy "cancerTypes [(0)]": żadny dopasowywanie redaktor lub zamiana strategia znajdować] 


Any pomysł dlaczego ten zagadnienie?
Thx!

Odpowiedź : Wiążący Wybiórka (Wielokrotność)

I załatwiać ono PropertyEditorSupport zamiast CustomCollectionEditor, i I także dodawać Równy the POJO IDs, i ono pracować jak urok.

Dzięki dla twój pomoc,
Ahmad
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
społeczeństwo klasowy CancerTypePropertyEditor przedłużyć PropertyEditorSupport  {

	intymny CancerTypeDAO dao;
	jawny CancerTypePropertyEditor (CancerTypeDAO dao, Klasowy collectionType) {
		super (collectionType);
	this.dao = dao;
	}
	
 
	@Override
	jawny kawitacyjny setAsText (Smyczkowy tekst) rzucać IllegalArgumentException {
		Przedmiot obj = getValue ();
		Lista lista = (Lista) obj;
		dla (Smyczkowy str: text.split (", ")) {
			list.add (dao.retrieveCancerType (Long.valueOf (str)));
		}
	}
	
	@Override
	społeczeństwo Smyczkowy getAsText () {
		// TODO Samochód-Wytwarzać metoda karcz
		powrotny super.getAsText ();
	} 
}

W Kontroler:
 	@Override
	ochraniać kawitacyjny initBinder (HttpServletRequest prośba,
			ServletRequestDataBinder segregator) rzut Wyjątek {
		super.initBinder (prośba, segregator);
		binder.registerCustomEditor (List.class, "cancerTypes",
			 nowy CancerTypePropertyEditor (getCancerTypeDao (),
					 List.class)); /	nowy CancerTypePropertyEditor ());		
	 }

W CancerType POJO (ignorować the bałamutny zmienna):
	@Override
	jawny jawny równy (Przedmiot anObject) {
		 jeżeli (anObject == null) {
		        powrotny fałszywy;
		    } inny jeżeli (ten == anObject) {
		        powrót prawdziwy;
		    } inny jeżeli (anObject instanceof CancerType) {
		        definitywny CancerType aCountry = (CancerType) anObject;
		        Długi aCountryId = aCountry.getId ();
		        jeżeli (aCountryId! = null) {
		            powrotny aCountry.getId () .equals (id);
		        }
		    }
		    powrotny fałszywy;
	}

The etykietka:
							
									
Inne rozwiązania  
 
programming4us programming4us