Почему мой скриптлет JSP не может получить int из pageContext и преобразовать его в локальную переменную примитива? - PullRequest
0 голосов
/ 22 декабря 2011

Я не мог найти способ сделать это в EL / JSTL, поэтому, когда я делаю это:

<% 
int myIntPrimitiveValue = pageContext.getAttribute("myDataObject.myIntPrimitiveValue");
MyEnumObject myEnumInstance = myEnumObject.get(myIntPrimitiveValue);
String myEnumValueName = myEnumInstance.getName();
pageContext.setAttribute("myEnumValueName", myEnumValueName);
%>

Я получаю эту ошибку:

Cannot cast from Object to int (line 1 in this snippet)

Я знаю, что в myDataObject.myIntPrimitiveValue есть допустимое значение, потому что я могу напечатать его так с помощью JSTL:

<c:out value="${myDataObject.myIntPrimitiveValue}"/>

Что я здесь не так делаю?

Ответы [ 2 ]

3 голосов
/ 22 декабря 2011

Это потому, что:

pageContext.getAttribute()

возвращает объект

Вам нужно преобразовать объект в int.Например:

int myIntPrimitiveValue = Integer.valueOf("" + pageContext.getAttribute("..."));
0 голосов
/ 22 декабря 2011

Приведите объект в требуемый тип, так как pageContext.getAttribute() возвращает объект, такой как session, возвращает объект. вам нужно сделать один из этих

int myIntPrimitiveValue = (Integer)pageContext.getAttribute("myDataObject.myIntPrimitiveValue");

          or

int myIntPrimitiveValue = Integer.valueOf("" + pageContext.getAttribute("myDataObject.myIntPrimitiveValue"));
...