Java objectタイプはintタイプに変換します。

4806 ワード

struts 1のaction類にはStringタイプの変数、intタイプの変数が設定されています。彼らをrequestに置いて、jspページで取得したときには、Objectタイプのシフトintタイプ、request.get Attribute(「」)が正しいですが、同じようにStringタイプの変数を変換したときに、異常を報告しました。
java.lang.CastException:java.lang.String cannot be cast to java.lang.Integer、とても奇怪です。
最後にStringタイプ変数をintタイプに変換してからrequestに設定するしかありません。
 
コード:
	public ActionForward listjob(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//jobFormbean job=(jobFormbean)form;
		
		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);
		//System.out.println(sql);
		rs=dbmgr.getQuery(sql);
		List<Job> list=new ArrayList<Job>();
		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に配置する
書き記す
<action path=「/user/manage/job」name=「JobFormben」scope=「request」type=「comp.hkr.ly.actions.job.JobManage」parameter=「method」
<forward name=「list」path=「/dtynwebmail/joblist.jsp」/>

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]):StringIntegerに復号する。10進数、16進数、8進数は、次の構文で受け付けます。
たとえば:
int a=Integer.decode(「0144」)//8進数変換の結果は100です。
int b=Integer.decode(「123」)//十進数変換結果は123です。
int c=Integer.decode(「0 x 123」)//16進数変換結果は291です。
注:Integer.decode([String])にマイナス記号を付けても変換できますが、文字列にスペースはありません。Number FormatException異常を報告します。
注:文字列をDoubleに変えて、Float、Longの方法は大同小異です。
int Steringタイプに変換する方法:
1.String s=String.valueOf(i)
2.String s=Integer.toString(i)
3.String s="+"i;
あまり使われない:
1.Integer.
toBinary String
(int i):2進数(基数2)符号なし整数形式で1つの整数パラメータの文字列表現形式を返します。
2.Integer.
toHexString
(int i):16進数(基数16)符号なし整数で整数パラメータを返す文字列表示形式。
3.Integer.
toOctalString
(int i):8進数(基数8)符号なし整数形式で整数パラメータの文字列表示形式を返します。
注:Double、Float、Longを文字列に変換する方法は大同小異です。
objectタイプはintタイプに変換されます。
1.objectがbyte、shot、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タイプに変換します。