当前位置: 代码迷 >> J2EE >> org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
  详细解决方案

org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)

热度:382   发布时间:2016-04-22 03:04:48.0
不明白的老问题:java.lang.ClassCastException: java.lang.Integer
一个简单的页面register.jsp包含:
。。。。。
<tr><td><bean:message key="user.age"/> </td><td><html:text property="age"/><html:errors property="age"/></td></tr>
<tr><td><bean:message key="user.sex"/></td><td><html:radio property="sex" value="1">男</html:radio>&nbsp;<html:radio property="sex" value="0">女</html:radio></td></tr>
。。。。。
对应的POJO:
  private int age;
  public void setAge(int age) {
this.age = age;
}

public String getAddress() {
return this.address;
}
hbm.xml:
  <property name="age" type="java.lang.Integer">
  <column name="AGE" precision="22" scale="0" />
  </property>
Action中:
//System.out.println("============"+sf.getString("age"));
int age =20;
users.setAge(age);
users.setAddDate(new Date());
daoImpl.save(users);
如果这样初始化age则可以保存成功。
ORACLE中对应表的AGE字段属性为NUMBER型。
如果把//System.out.println("============"+sf.getString("age"));前面的注释去掉,
则会报错:
javax.servlet.ServletException: java.lang.Integer
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
获取不到sf.getString("age"))的值,用sf.getString("age").toString()也获取不到值;为什么?


------解决方案--------------------
sf.getInt("AGE");
------解决方案--------------------
private int age; 
public void setAge(int age) { 
this.age = age; 
} 改成
private Integer age; 
public void setAge(Integer age) { 
this.age = age; 



------解决方案--------------------
private int age; 
public void setAge(int age) { 
this.age = age; 
}
 改成 
private Integer age; 
public void setAge(Integer age) { 
this.age = age; 

public void gettAge() { 
return this.age ; 
}

------解决方案--------------------
int 改为Integer 表和实体映射时候 只识别包装类 不然会出先错误
------解决方案--------------------
探讨
引用:
int 改为Integer 表和实体映射时候 只识别包装类 不然会出先错误


我测试过是int也可以的,只是在struts-config.xml中 <form-property name="age" type="java.lang.Integer" /> 改为String的出错类型错误,而我在其它的struts-config.xml中又可以了,百思不得其解。


------解决方案--------------------
struts1现在还有市场吗?
------解决方案--------------------
请问下sf是什么
是不是应该这么写sf.getAge()?
还有actionform里应该有这些代码
private int age;
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
------解决方案--------------------
  相关解决方案