为什么我的JSP scriptlet无法从pageContext中检索int并将其转换为本地范围的原始变量?

时间:2011-12-21 23:19:26

标签: java jsp enums scriptlet

我无法找到在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 个答案:

答案 0 :(得分:3)

这是因为:

pageContext.getAttribute()

返回Object

您需要将Object转换为int。例如:

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

答案 1 :(得分:0)

将对象转换为所需类型,如pageContext.getAttribute()返回对象,例如session返回对象。 你需要做其中一个

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

          or

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