类型转换问题

waterhill 2010-08-03 09:12:38
1)在LoginAction中:
//用户登录成功后,取角色
int role=loginService.getRole();
ActionContext.getContext().getSession().put("Role", "role");

2)在AddUserAction中:
//取登录者角色
String s = (String)ActionContext.getContext().getSession().get("role");
int role = Integer.valueOf(s).intValue();
或int role = Integer.parseInt(s);
提示如下错误:
javax.servlet.ServletException: java.lang.NumberFormatException: For input string: "role"
然后,将1)中的“role”去掉引号,提示错误为:
javax.servlet.ServletException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

想在role为int型的情况下,完成存和取的操作,有办法吗?网上搜索了好久,没找到正解
...全文
94 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
waterhill 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wzju64676266 的回复:]
ctionContext.getContext().getSession().put("Role", "role");

你put的值是role


String s = (String)ActionContext.getContext().getSession().get("role"); //这里应该是Role,大写的吧

s的值并不是数字,那又怎么能使用Integer.valu……
[/Quote]
本来都是小写的,只是帖时为了区别,把put(“role”,“role”)改为了("Role", "role");,2)中的忘记了改了~~~呵呵~~~
wzju64676266 2010-08-03
  • 打赏
  • 举报
回复
ctionContext.getContext().getSession().put("Role", "role");

你put的值是role


String s = (String)ActionContext.getContext().getSession().get("role"); //这里应该是Role,大写的吧

s的值并不是数字,那又怎么能使用Integer.valueOf(s)呢
waterhill 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dr_lou 的回复:]
将1)中的“role”去掉引号,提示错误为:
javax.servlet.ServletException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String


如果还是1)报的错,请用 ActionContext.getContext().getSession().put……
[/Quote]

这个没试,感觉不一定行,问题可能出在“取”时了,依然感谢和给分哦,之后结贴~~
waterhill 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 djvfe 的回复:]
ActionContext.getContext().getSession().put("Role", "role");
改为
ActionContext.getContext().getSession().put("Role", String.valueOf(role));

int role = Integer.valueOf(s).intValue();
改为
if(s!=nul……
[/Quote]
果然可以了。。。。
dr_lou 2010-08-03
  • 打赏
  • 举报
回复
将1)中的“role”去掉引号,提示错误为:
javax.servlet.ServletException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String


如果还是1)报的错,请用 ActionContext.getContext().getSession().put("Role", role+"");
dr_lou 2010-08-03
  • 打赏
  • 举报
回复
int role = Integer.parseInt(s);
加上try-catch应该可以的。
djvfe 2010-08-03
  • 打赏
  • 举报
回复

ActionContext.getContext().getSession().put("Role", "role");
改为
ActionContext.getContext().getSession().put("Role", String.valueOf(role));

int role = Integer.valueOf(s).intValue();
改为
if(s!=null && s.matches("^[-]?[0-9]+$")) {
int role = Integer.valueOf(s).intValue();
}
dr_lou 2010-08-03
  • 打赏
  • 举报
回复
存的那个去掉“”应该就可以了。

取的那个你输出一下s

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧