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に設定するしかありません。
コード:
書き記す
<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ページで
Stringをintタイプに変換する方法:
1.Integer.parseInt([String])
2.Integer.valueOf([String].intValue()
3.Integer.decode([String]):
たとえば:
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タイプに変換します。
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]):
String
をInteger
に復号する。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タイプに変換します。