在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中。
代码:
- public ActionForward listjob(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
-
-
- DbManager dbmgr=new DbManager();
- String orgid=request.getParameter("orgid");
-
- String page = request.getParameter("curpage");
- String countsql="select count(*) from ln_job where orgid='"+orgid+"'";
- int rowcount=dbmgr.rowscount(countsql);
-
- if (page == null) {
- page = "1";
- }
- if (page.equals("") || page.equals("0")) {
-
- page = "1";
- }
-
-
- PageManager pmg = new PageManager();
- pmg.setrowsPerPage(15);
- pmg.setpagenum(Integer.parseInt(page));
-
-
- pmg.setmaxRowCount(rowcount);
-
- int rowsStart = pmg.getrowsStart();
- int rowsEnd = pmg.getrowsEnd();
- int maxPage = pmg.getmaxPage();
- int nextpage = pmg.getnextpage(Integer.parseInt(page));
-
-
-
-
-
- String sql="select * from (select jobid,jobname,orgid,row_number() over(order by jobid asc) rn from ln_job where orgid='"+orgid+"' ) where rn>="+rowsStart+" and rn<="+rowsEnd;
- System.out.println(sql);
-
- rs=dbmgr.getQuery(sql);
- List list=new ArrayList();
- while(rs.next()){
- Job og=new Job();
- og.setJobid(rs.getInt("jobid"));
- og.setJobname(rs.getString("jobname"));
- og.setOrgid(rs.getString("orgid"));
- list.add(og);
-
- }
- sql="select orgname from ln_org where orgid='"+orgid+"'order by orgid asc";
- rs=dbmgr.getQuery(sql);
- String orgname="";
- 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);
- return mapping.findForward("list");
- }
struts-config.xml中配置
写道
在joblist.jsp页面中
- <%
- int nextpage=(Integer)request.getAttribute("nextpage");
- int maxPage=(Integer)request.getAttribute("maxPage");
- int currentPage=(Integer)request.getAttribute("currentPage");
- int fontpage=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
(int i) :以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
2.Integer.
toHexString
(int i) :以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
3.Integer.
toOctalString
(int i):以八进制(基数 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类型。