在struts1的action类中设置了String类型的变量,int类型的变量,把他们放在request中,在jsp页面获取的时候object类型装换位int类型,(Integer)request.getAttribute("")没错,但是同样的方式转换String类型的变量的时候,报了异常
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer,很奇怪request.getAttribute("xx")返回object类型,怎么会报这样的异常呢?
最后只能把String类型变量转化为int类型,然后才设置request中。
代码:
Java代码publicActionForwardlistjob(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ //jobFormbeanjob=(jobFormbean)form; DbManagerdbmgr=newDbManager(); Stringorgid=request.getParameter("orgid"); //分页代码开始 Stringpage=request.getParameter("curpage"); Stringcountsql="selectcount(*)fromln_jobwhereorgid='"+orgid+"'"; introwcount=dbmgr.rowscount(countsql); if(page==null){ page="1"; } if(page.equals("")||page.equals("0")){ page="1"; } PageManagerpmg=newPageManager(); pmg.setrowsPerPage(15); pmg.setpagenum(Integer.parseInt(page)); pmg.setmaxRowCount(rowcount); introwsStart=pmg.getrowsStart(); introwsEnd=pmg.getrowsEnd(); intmaxPage=pmg.getmaxPage(); intnextpage=pmg.getnextpage(Integer.parseInt(page)); //分页代码结束 Stringsql="select*from(selectjobid,jobname,orgid,row_number()over(orderbyjobidasc)rnfromln_jobwhereorgid='"+orgid+"')wherern>="+rowsStart+"andrn<="+rowsEnd; System.out.println(sql); //System.out.println(sql); rs=dbmgr.getQuery(sql); List<Job>list=newArrayList<Job>(); while(rs.next()){ Jobog=newJob(); og.setJobid(rs.getInt("jobid")); og.setJobname(rs.getString("jobname")); og.setOrgid(rs.getString("orgid")); list.add(og); } sql="selectorgnamefromln_orgwhereorgid='"+orgid+"'orderbyorgidasc"; rs=dbmgr.getQuery(sql); Stringorgname=""; while(rs.next()){ orgname=rs.getString(1); } request.setAttribute("currentPage",Integer.parseInt(page)); request.setAttribute("nextpage",nextpage); request.setAttribute("maxPage",maxPage); request.setAttribute("list",list); request.setAttribute("orgid",orgid); request.setAttribute("orgname",orgname); returnmapping.findForward("list"); }
struts-config.xml中配置
写道 <action path="/user/manage/job" name="JobFormbean" scope="request" type="com.hkr.ly.action.job.JobManage" parameter="method">
<forward name="list" path="/dtynwebmain/job/joblist.jsp"/>
</action>
在joblist.jsp页面中
Java代码<% intnextpage=(Integer)request.getAttribute("nextpage"); intmaxPage=(Integer)request.getAttribute("maxPage"); intcurrentPage=(Integer)request.getAttribute("currentPage"); intfontpage=0; if(currentPage>1){ fontpage=currentPage-1; } %>
总结:
String转换为int类型的方法:
1. Integer.parseInt([String])
2.Integer.valueOf([String]).intValue();
3.Integer.decode([String]):将String
解码为Integer
。接受通过以下语法给出的十进制、十六进制和八进制数字
例如:
int a=Integer.decode("0144"); //八进制转换结果为100
int b=Integer.decode("123");//十进制转换结果为123
int c=Integer.decode("0x123");//16进制转换结果为291
注:Integer.decode([String])加负号也可以转换,不过字符串不能有空格。否则报NumberFormatException异常
注: 字串转成 Double, Float, Long 的方法大同小异.
int转换为String类型方法:
1.String s = String.valueOf(i); 2.String s = Integer.toString(i); 3. String s = "" + i; 不常用的: 1.Integer.toBinaryString(inti):以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
2.Integer.toHexString(inti):以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
3.Integer.toOctalString(inti):以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 注: Double, Float, Long 转成字串的方法大同小异.
object类型转换为int类型:
1.如果object是byte,short,int,char类型生成的,那么不用转换直接赋值就ok了。
2.如果object是字符串类型生成的,先把object转换为String类型的,再把String类型转换为int类型。
例如.
String myInt="123";
Object os=myInt;
int b=Integer.parseInt((String)os);//还可以os.toString()
3.如果object是float,double,long类型生成的,思路和上面一样,先把object转换为相应的数据类型,然后再转换为int类型。