今天一直出现这个问题, 在这段代码中我也没看出到底哪里错了,但是就一直访问不到 IdentiNum 这个属性。
这个是jstl 的代码:
<c:forEach items="${recommesslist}" var="recommesslist">
<tr>
<td>${recommesslist.recomName}</td>
<td>${recommesslist.IdentiNum}</td>
<td>${recommesslist.telenum}</td>
<td>${recommesslist.targetcity}</td>
<td>${recommesslist.targetbuildings}</td>
<td>${recommesslist.test}</td>
<td><fmt:formatDate value="${remeslist.creattime}" pattern="yyyy-mm-dd HH:mm:ss" /></td>
<td> <a href="${pageContext.request.contextPath}/recommesslist/queryItems.action?tele=${remeslist.telenum}">修改</a></td>
</tr>
</c:forEach>
在一部分是实体的所有的属性。而且配置是没有问题的。因为当我把这个属性删除的时候可以显示出效果。
public class RecommendMessage {
private String recomName;
private String IdentiNum; //身份证后六位
private String telenum;
private String targetcity; //意向城市
private String targetbuildings; //意向楼盘
private String test; //备注
private Date creattime;
这个是控制器的代码
public class ItemController1 implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
List<RecommendMessage> recommesslist = new ArrayList<RecommendMessage>();
RecommendMessage recommes2 = new RecommendMessage();
recommes2.setRecomName("小雪");
recommes2.setIdentiNum("345678");
recommes2.setTelenum("18822839867");
recommes2.setTargetbuildings("北京市楼盘");
recommes2.setTargetcity("北京市");
recommes2.setCreattime(new Date());
recommesslist.add(recommes1);
//System.out.println(recommesslist.get(0).getIdentiNum());
//现在要返回一个modelandview
ModelAndView modelAndView = new ModelAndView();
// 这个方法就相当于request 的 setattribut() 方法,因此 在jsp页面中,可以通过 这个方法来获得数据
modelAndView.addObject("recommesslist",recommesslist);
System.out.println("去设置了list");
//上面的方法是获得数据,下面的就要指定视图,去找到我要返回给的jsp页面
modelAndView.setViewName("/WEB-INF/jsp/recommendmessage/recommmeslist.jsp");
System.out.println("去返回jsp页面");
还有一个疑问,就是
<form action="${pageContext.request.contextPath}/recommesslist/queryItems.action " method="post">
1. action中的内容应该是一个请求的地址。它去请求谁?后面好像有一种其他的方式来实现这个功能
2. /recommesslist/queryItems.action 这个recommesslist的用途是什么?去掉的话好像也没有影响到功能。(经过测试确实不影响。但是并不知道里面那个recommesslist 是啥意思。。。)
这是昨天的问题,保留,下面是解决:
出现问题原因1:
在 实体中定义属性为 大写 IdentiNum ,这个应该是没有影响的,但是为了比较好的命名规范,我改成了小写的 identiNum。
出现问题原因2:
在 实体的RecommendMessage 中的 get set 方法中,我一开始都是自己生成的,但是我修改问题1 以后,重新修改了 get set 方法,没改之前是这样的:
public String getIdentiNum() {
return identiNum;
}
public void setIdentiNum(String identiNum) {
identiNum = identiNum;
}
看到问题了吧,在set 方法中没有 this,因此他不知道是把那个对象的identiNum 属性设置进去了。
因此正确的为:
public String getIdentiNum() {
return identiNum;
}
public void setIdentiNum(String identiNum) {
this.identiNum = identiNum;
}
这样就可以了。
然后还要注意jstl 的写法,在属性中间是不能有空格的。否则也得不到信息。