MyException - 我的异常网
当前位置:我的异常网» J2EE » J2EE进阶(十一)SSH框架整合常见有关问题汇总(二)

J2EE进阶(十一)SSH框架整合常见有关问题汇总(二)

www.MyException.Cn  网友分享于:2013-07-30  浏览:0次
J2EE进阶(十一)SSH框架整合常见问题汇总(二)

J2EE进阶(十一)SSH框架整合常见问题汇总(二)

问题8

      java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

     解决

      数据库中userdetail表的映射文件如下,可见xb字段数据类型为boolean类型,而自己在userdetail模型类中定义的类型为String类型。为此可以得出这样的结论。模型类中的数据及类型必须与数据表映射文件中的字段信息保持一致。应该可以同时生成pojo类和映射文件,只是自己当时进行项目设置时没有进行相应的设置,从而招致后期错误的不断出现。

 

问题9

      org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of cn.edu.ujn.model.User.orderses

     解决

     初步怀疑是数据表映射文件出的问题。User.hbm.xml文件存在以下内容:

  

      <set name="orderses" inverse="true">
            <key>
                <column name="userid" />
            </key>
            <one-to-many class="cn.edu.ujn.model.Orders" />
    </set>

      通过参考课本,得知Set集合属性需要使用<Set.../>元素进行映射,使用<key.../>元素映射外键列,用于保证持久化类和集合属性的关联。Hibernate映射Set集合属性时应指定映射表名,即以上代码应更改为

        <set name="orderses" table="orders" inverse="true">
            <key>
            	<!-- 指定外键字段的列名 -->
                <column name="userid" />
            </key>
            <one-to-many class="cn.edu.ujn.model.Orders" />
   </set>

      从以上定义可知,变量orserses应为Set集合数据类型,应定义为private Set<String> orderses = new HashSet<String>();同时设置其getset方法。而自己之前将其定义为了String类型,导致get时发现数据类型不一致而报错。

      经过以上更改,当用户输入正确的用户名与密码时即可登录到正确的页面。

问题10

      明明在jsp文件内调用了js方法,但是始终没有效果。

      解决

      经过调试直接在js文件内执行alert("测试");弹出窗口,而Window.alert("测试");却没有弹出窗口,经过网上一番搜索,也没有找出合理的解释。将弹窗改为alert();之后,问题得以解决。

问题11

      jsp页面中存在语句:<s:property value="#request.msg"/>,其中request为action中所定义的变量。

      Map request = (Map) ActionContext.getContext().get("request");

       request.put("request", "旧密码错误,请重新输入");

      但是当自己的旧密码输错时,错误提示总是不会显示。

      解决

      再次对照视频发现原来是自己将代码敲错了,o(︶︿︶)o 唉,不知为不过啊!其实之前自己就看着代码不对劲。正确代码如下:

Map request = (Map) ActionContext.getContext().get("request");
request.put("msg", "旧密码错误,请重新输入");

问题12

      在设置分页操作时,总是会出现不能正确显示现象。如下图所示:

 

      Jsp页面代码如下:

  	<s:iterator value="#request.catalogs" id="catalog">
  	<a href="browseFlowerPagingAction.action?catalogid=<s:property value="#catalog.catalogid"/>¤tPage=1" target="_self"><s:property value="#catalog.catalogname"/> </a>  
  	<br><br>
        </s:iterator>

      解决

      再次对照视频,也没有发现有什么纰漏的地方。而且地址栏显示为

      http://localhost:8088/flowerGift/browseFlowerPagingAction.action?catalogid=3¤tpage=1,但是console控制台显示page.currentPage:2这就令自己很是费解了。明明设置的是从第一页开始显示的,为何就不见效果呢?

      通过仔细观察代码发现,原来变量currentPage错写为了currentpage一字之差啊。这里的currentPage本是Page类中的成员变量。当初自己太粗心了,导致后期检查错误特别吃力。O(︶︿︶)o 唉,自己挖的坑还得坑自己啊,到头来还得自己填坑。

  	<s:iterator value="#request.catalogs" id="catalog">
  	<a href="browseFlowerPagingAction.action?catalogid=<s:property value="#catalog.catalogid"/>currentPage=1" target="_self"><s:property value="#catalog.catalogname"/> </a>  
  	<br><br>
	</s:iterator>
 

问题13

      在进行订单提交操作时,出现了一下错误提示:

 


 

      解决

      初步判定是由model中变量类型与数据表映射文件中的数据类型不一致造成的。这个问题与问题5和问题9比较相似。经过查找,发现OrderItem中的flowerid为int类型,而与Flower中的flowerid数据类型Integer不同,更改之后,问题得以解决。有关Integer与int数据类型的区别,详见注4。

问题14

      提交订单操作时,发现jkxyshsflower.orders表数据写入没有问题,但是与订单相关联的jkxyshsflower.orderitem表中flowerid的值却没有写入,此问题与问题6颇为相似,均涉及到了表的级联操作问题。问题6迄今尚未得到解决。其中orders数据表的映射文件内容如下:

 

其中,在映射set集合时,配置项如上图所示。注意其中使用了级联属性cascade=“all”。视频中的数据写入没有任何问题,但是自己实践时却出现了无法写入的情况。

 

jkxyshsflower.orders表

 

jkxyshsflower.orderitem表

   解决

     经过查看程序,发现果然还是映射文件配置错误出现的问题,最好的方法就是利用Hibernate的反向工程功能,自动生成数据表对应model类及映射配置文件。具体方法参见博文《J2EE进阶(七)利用SSH框架根据数据表建立model类》。这样问题6同样得到解决。

 

jkxyshsflower.orders表

 

jkxyshsflower.orderitem表

问题15

     在挂失解挂用户时,出现了如下错误提示:

 


 

     解决

     manageUser.jsp部分代码如下:

 

     哪哪都是戏,不知怎么的,程序突然又可以了。及时重启服务、清缓存是常做的工作。

美文美图



文章评论

一个程序员的时间管理
一个程序员的时间管理
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员和编码员之间的区别
程序员和编码员之间的区别
旅行,写作,编程
旅行,写作,编程
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
鲜为人知的编程真相
鲜为人知的编程真相
编程语言是女人
编程语言是女人
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
代码女神横空出世
代码女神横空出世
我是如何打败拖延症的
我是如何打败拖延症的
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员应该关注的一些事儿
程序员应该关注的一些事儿
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
 程序员的样子
程序员的样子
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
那些争议最大的编程观点
那些争议最大的编程观点
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java程序员必看电影
Java程序员必看电影
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
每天工作4小时的程序员
每天工作4小时的程序员
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员都该阅读的书
程序员都该阅读的书
程序员必看的十大电影
程序员必看的十大电影
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
漫画:程序员的工作
漫画:程序员的工作
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
10个调试和排错的小建议
10个调试和排错的小建议
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有