SSH框架项目开发常见问题汇总

举报
SHQ5785 发表于 2022/08/25 09:25:28 2022/08/25
【摘要】 ​问题8      java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean     解决      数据库中userdetail表的映射文件如下,可见xb字段数据类型为boolean类型,而自己在userdetail模型类中定义的类型为String类型。为此可以得出这样的结论。模型类...

问题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>();同时设置其get、set方法。而自己之前将其定义为了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> </s:iterator>
<span style="color:#ff0000"> <img data-cke-saved-src="https://img-blog.csdn.net/20160723111906547?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" src="https://img-blog.csdn.net/20160723111906547?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span>

问题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部分代码如下:

 

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。