JPS useBean с HashMap

Как да използвам правилно jsp:useBean с колекции като списъци и карти?

Мога да получа списъци, като използвам

    type="List<MyObject>"

но не мога да накарам списъка да се инстанцира, ако нищо не е предадено.

    class="ArrayList<MyObject>"

И горният атрибут дава грешка:

Стойността за атрибута на класа useBean ArrayList<MyObject> е невалидна.

И двата атрибута са неуспешни за HashMap.

В момента чета обектите с помощта на getAttribute(), но ще бъде по-чисто да използвам таговете и да ги настроя.


person akula1001    schedule 16.07.2010    source източник


Отговори (1)


Опитахте ли току що

class="java.util.ArrayList"

Не забравяйте, че действителното име на типа не включва общия тип, това е синтактична захар, използвана в самия език Java и <jsp:useBean> не е част от езика Java.

person skaffman    schedule 16.07.2010
comment
Предполагам, че изразът ми беше неясен. Редактирах малко поста си. Атрибутът клас е този, който хвърля грешката. Атрибутът тип работи за списъци, но не инстанцира списъка, ако се предаде null. - person akula1001; 16.07.2010
comment
@manu101: Да, но class="ArrayList<MyObject>" не е валиден, защото ArrayList<MyObject> не е валиден тип. Типът е java.util.ArrayList - person skaffman; 16.07.2010
comment
@manu1001, skaffman е напълно прав. Просто исках да добавя, че jsp:useBean е излишно, ако не е необходимо да задавате елементи в списъка (за който между другото няма начин да използвате тагове jsp: или c:) и когато осъществявате достъп до него, като използвате чист EL (напр. ${foo} и скоро). Можете да оставите реда jsp:useBean, освен ако не е за целите на чистата документация или поддръжката на IDE. - person BalusC; 16.07.2010
comment
Добре, разбрах. Сега работи за Lists. Но какво да кажем за HashMap? Същото не работи. По принцип искам да знам как да чета HashMap‹MyObject1, MyObject2› от обхвата на заявката с помощта на етикета useBean. - person akula1001; 16.07.2010
comment
@manu1001: ако java.util.ArrayList работи, значи и java.util.HashMap ще работи - person skaffman; 16.07.2010