11月=p=错误异常报告

11月=p=错误异常报告

记录11月每天写代码中出现的异常。

1=p

在这里插入图片描述
debug测试发现,departmentList 集合为空

<%
List<Department> departmentList = (List<Department>)request.getAttribute("departmentList");
%>
<%for(int i = 0;i<departmentList.size();i++){ %>
   										 	<option value=<%=i+1 %>><%=departmentList.get(i).getDepartment()%></option>
   										 <% } %> 
  										<%-- <c:forEach items="${departmentList}" value="d">
   										 <option value=${d.dpid}>${d. department}</option>
   											</c:forEach> --%>

当时用什么都遍历不出来数据。那就继续向方法那边去检查,在action类中发现定义的方法没有将数据提取出来保存在request的定义域中

	@Action("doShowDepartment")
	public String doShow() {
		List<Department> departmentList = departmentService.findAllDepartment();
		super.getServletRequest().setAttribute("departmentList", departmentList);
		return INPUT;
	}

之后加上getServletRequest().setAttribute就可以在前台遍历到集合了。

2 =p

之前还有报错说“列名number”无效,翻看了数据库发现没有number这个字段,再回翻model里面发现,原来添加过这个字段,不过后来修改了就没有再用,把model里面的number对象删掉,再和数据库对应检查一遍,就好了。

3==p

在这里插入图片描述

当时页面方法都写好之后,怎么都进不去页面,后来把要跳转的这个页面放到了监听内部的那个文件夹中,就可以进去了。

4==p

在这里插入图片描述

由于身份证号设置的空值,所以年龄也为空,所以年龄这一个数据显示不出来。
拿有身份证号的数据去测试,就会成功。

5==p

在这里插入图片描述
这里的方法名称写错了,所以找不到reservationSelect这个方法,把action的方法改一下,或者把调用方法的路径改一下就好了

6==p

在这里插入图片描述
在这里插入图片描述
想让jsp页面调用action的方法再跳转到各种jsp页面中,但是写代码的时候发现这么写,每次都会报错

	@Action("ReservationViewSelect")
	public String ReservationViewSelect() {
		List<ReservationView> rvList = reservationViewService.findAllReservationView();
		super.getServletRequest().setAttribute("rvList", rvList);
		return "ReservationSelect.jsp";
		}

后来知道ssh中好像不能这么跳转,return一般只返回INPUT和SUCCESS;
INPUT 和 SUCCESS是actionsupport类提供的两个返回常量。input默认用来返回输入异常,success默认是处理数据完成,成功跳转。
再去查看了有关@Action的注解,修改了原来的代码

	@Action(value = "ReservationViewSelect", results = { @Result(name = "success", location = "ReservationSelect.jsp") }) 
	public String ReservationViewSelect() {
		List<ReservationView> rvList = reservationViewService.findAllReservationView();
		super.getServletRequest().setAttribute("rvList", rvList);
		return SUCCESS;
	}

这样就可以value的名字和跳转页面的名字不一样,也可以跳转到那个页面去了。

7==p

继续往后做的时候,遇到了模糊查询,查询的结果总为空

    @Override
    	@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
    	public List<ReservationView> findByReservationName(String cname) {
    		QueryBuilder qb = new QueryBuilder();
    		QueryUtils.addWhere(qb, " and cname like {0} ", "%"+cname+"%");
    		QueryUtils.addWhere(qb, " and type = {1} ", true);
    		return reservationViewDao.find(qb);
    	}

在这里插入图片描述
用debug调试,在面板中看到cname的值为空,所以传不过来值,sql语句没有问题,其他方法用的都是这套,就想起来来,前提jsp页面的select,他的id没有传过来。。。

<input id="cname" type="text" placeholder="请输入需要查询的名字" class="form-control"/>
<a href="ReservationViewSelectByName"><i class="fa fa-search"></i></a>

a标签传input文本值的时候,发现又出现错误,也是传值为空

<input id="cname" type="text" placeholder="请输入需要查询的名字" class="form-control"/>
<a href="ReservationViewSelectByName?cname='id'"><i class="fa fa-search"></i></a>

实在没有办法,到网上看别的,发现大部分人都是用javascript的获取值,随后就照着博主的样式照抄了一份,发现可以成功模糊查询了,代码如下

function jump(){
	var1 = document.getElementById ("cname").value;//获取该text对象
		location.href='ReservationViewSelectByName?cname='+var1;
	}
 <input id="cname" type="text" placeholder="请输入需要查询的名字" class="form-control"/>
                      <a href="javascript:jump()"><i class="fa fa-search"></i></a>

8==p

用c标签遍历了一堆数据到页面,可是发现当我加入CustomerId的时候,页面就一直报错,会报我那一行有错,

严重: Exception occurred during processing request: An exception occurred processing JSP page /WEB-INF/content/ReservationSelect.jsp at line 68

<td>${rvList.CustomerId}</td>//68行

在这里插入图片描述

private int CustomerId;//实体类对象

说是在实体类model中找不到这个字段,我反复比对,复制,都发现model里面确实有这个,且两个值也一样,可是还是总出错,而且只有它会报错,去掉它就能正常运行。
去网上查了查发现,https://blog.csdn.net/liu_yuan_kai/article/details/80268323 这个博主写的“
javaWEB使用El表达式报错问题,属性未找到javax.el.PropertyNotFoundException”这篇文章给我讲解清楚了。以下是文章文章重点:
首先我们需要了解的El表达式的运行机制:
el表达式在你获取对象时,自动把你的属性名转换成字符串,并把首字母大写,进行拼接(“get”+属性名),然后通过反射的方式获取到get方法,返回属性值。实际上就是调用了一遍JavaBean里面的某属性的get函数。
但是这儿比较鸡肋是,即使你的类属性 首字母是大写,你在调用的时候还是要写成小写格式。
所以当我把EL表达式改写为小写的时候${rvList.customerId},就可以成功运行了。

9==p

c标签,foreach循环数据,写完之后发现报错
在这里插入图片描述
属性值无效标记forEach TLD

<c:forEach items="${reservationViewList}" value="r">
    <a href="#"  class="label label-primary">${r.cname }</a>
</c:forEach>

不知道怎么回事,印象中后面的重新命名,总记成value,实际上应该是var,
重新改过之后,可以重新遍历出来数据。

10==p

在用foreach遍历集合的时候,报错,属性“id”在转发类型上未找到
javax.el.PropertyNotFoundException:Property ‘id’ not found on type。。。
在这里插入图片描述

<c:forEach items="${ecvList }" var="ecvList">
	<td>${ecvList.caseid}</td>
</c:forEach>

jsp这边也都没有问题,看了看 https://blog.csdn.net/eastmount/article/details/45835481 这个博主整理的错误,找到了遍历这个集合的实体类,因为不是自己写的实体类,所以之前没有注意这方面,发现实体类中没有添加geter和seter,添加了之后,就可以遍历出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值