跪求这段代码哪里有问题?list取出来的值都是空

lovefox_zoe 2018-03-18 08:34:51
map后,list的数值取出来都是空的。


public Map<String, Object> getAtt1Data(HttpServletRequest request){
//0.新建信息列表
Map<String, Object> map = new HashMap<String, Object>();
//0.1新建一个表头数据列表
List<AttDayInfo> attDayList = new ArrayList<AttDayInfo>();
//1.1获取指定月份的天数
//2.1生成表头日期和星期部分
for(int i = 0; i < 30; i++)
{
//
AttDayInfo attDayInfo = new AttDayInfo();
attDayInfo.setIDay(i+1);
attDayList.add(attDayInfo);
}
map.put("tableHead",attDayList);
//4.返回map
return map;

}

AttDayInfo类的定义如下

public class AttDayInfo {
private int iDay;

public int getIDay(){
return iDay;
}

public void setIDay(int iDay){
this.iDay = iDay;
}
}
...全文
611 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
更好的自己520 2018-03-20
  • 打赏
  • 举报
回复
AttDayInfo attDayInfo = new AttDayInfo(); 这个顺序错了把,在for循环里面,每循环一次都创建个对象,把前面没用的就当作垃圾给回收了估计,所以导致取值为空,望采纳
诺丽果 2018-03-20
  • 打赏
  • 举报
回复
你的AttDayInfo类缺东西,改成
public class AttDayInfo {
    private int iDay;

	public int getiDay() {
		return iDay;
	}

	public void setiDay(int iDay) {
		this.iDay = iDay;
	}

	public AttDayInfo(int iDay) {
		super();
		this.iDay = iDay;
	}

	@Override
	public String toString() {
		return "AttDayInfo [iDay=" + iDay + "]";
	}


	public AttDayInfo() {
		super();
		// TODO Auto-generated constructor stub
	}
}
然后你的java代码,试试我写的这个

	public static Map<String, Object> csdn() {
		// 0.新建信息列表
		Map<String, Object> map = new HashMap<String, Object>();
		// 0.1新建一个表头数据列表
		List<AttDayInfo> attDayList = new ArrayList<AttDayInfo>();
		// 1.1获取指定月份的天数
		// 2.1生成表头日期和星期部分
		for (int i = 0; i < 5; i++) {
			//
			AttDayInfo attDayInfo = new AttDayInfo();
			attDayInfo.setiDay(i + 1);
			attDayList.add(attDayInfo);
			System.out.println("attDayInfo"+attDayInfo);
			System.out.println("attDayList"+attDayList);
		}
		map.put("tableHead", attDayList);
		System.out.println("map"+map);
		// 4.返回map
		return map;

	}
	public static void main(String[] args) {
		Map<String, Object> map1 = new HashMap<String, Object>();
		map1 = csdn();
		System.out.println("map1"+map1);
	}
我试了,可以取到值,看看log:
attDayInfoAttDayInfo [iDay=1]
attDayList[AttDayInfo [iDay=1]]
attDayInfoAttDayInfo [iDay=2]
attDayList[AttDayInfo [iDay=1], AttDayInfo [iDay=2]]
attDayInfoAttDayInfo [iDay=3]
attDayList[AttDayInfo [iDay=1], AttDayInfo [iDay=2], AttDayInfo [iDay=3]]
attDayInfoAttDayInfo [iDay=4]
attDayList[AttDayInfo [iDay=1], AttDayInfo [iDay=2], AttDayInfo [iDay=3], AttDayInfo [iDay=4]]
attDayInfoAttDayInfo [iDay=5]
attDayList[AttDayInfo [iDay=1], AttDayInfo [iDay=2], AttDayInfo [iDay=3], AttDayInfo [iDay=4], AttDayInfo [iDay=5]]
map{tableHead=[AttDayInfo [iDay=1], AttDayInfo [iDay=2], AttDayInfo [iDay=3], AttDayInfo [iDay=4], AttDayInfo [iDay=5]]}
map1{tableHead=[AttDayInfo [iDay=1], AttDayInfo [iDay=2], AttDayInfo [iDay=3], AttDayInfo [iDay=4], AttDayInfo [iDay=5]]}
其实就是你的AttDayInfo 类的问题,缺少构造函数
Summer夏天丶 2018-03-20
  • 打赏
  • 举报
回复
感觉没什么问题啊!
为了生活而生 2018-03-20
  • 打赏
  • 举报
回复
你往jsp页面传递的吧,map 设置成全局,添加get,set方法
huawangxin 2018-03-20
  • 打赏
  • 举报
回复
引用 楼主 lovefox_zoe 的回复:
map后,list的数值取出来都是空的。

public Map<String, Object> getAtt1Data(HttpServletRequest request){
		//0.新建信息列表
		Map<String, Object> map = new HashMap<String, Object>();
		//0.1新建一个表头数据列表
		List<AttDayInfo> attDayList = new ArrayList<AttDayInfo>();
		//1.1获取指定月份的天数
		//2.1生成表头日期和星期部分
		for(int i = 0; i < 30; i++)
		{
			//
			AttDayInfo attDayInfo = new AttDayInfo();
			attDayInfo.setIDay(i+1);
			attDayList.add(attDayInfo);
		}
		map.put("tableHead",attDayList);
		//4.返回map
		return map;
	
	}
AttDayInfo类的定义如下

public class AttDayInfo {
    private int iDay;

    public int getIDay(){
        return iDay;
    }

    public void setIDay(int iDay){
        this.iDay = iDay;
    }
}
取出map里的变量tableHead的iDay
诺丽果 2018-03-20
  • 打赏
  • 举报
回复
引用 13 楼 a3060858469 的回复:
AttDayInfo attDayInfo = new AttDayInfo(); 这个顺序错了把,在for循环里面,每循环一次都创建个对象,把前面没用的就当作垃圾给回收了估计,所以导致取值为空,望采纳
拜托,把AttDayInfo attDayInfo = new AttDayInfo();这句话加在循环里是为了不覆盖上一次的值,你可以自己试一下什么效果,假设i的值为5,并且你把AttDayInfo attDayInfo = new AttDayInfo(); 挪到循环外面的话,最后就变成了attDayList[AttDayInfo [iDay=5], AttDayInfo [iDay=5], AttDayInfo [iDay=5], AttDayInfo [iDay=5], AttDayInfo [iDay=5]]]
lcvcl 2018-03-19
  • 打赏
  • 举报
回复
你可以在取之前打印或者log一下看看里面是否有值,感觉像是没传出去
  • 打赏
  • 举报
回复
这两段代码看不出来什么毛病啊,map里面是有值的。
gyge96 2018-03-19
  • 打赏
  • 举报
回复
从哪里取的值?也把代码贴一下吧
奔跑_蚂蚁 2018-03-19
  • 打赏
  • 举报
回复
看代码塞值没问题,是不是你取值有问题
戎码一生灬 2018-03-19
  • 打赏
  • 举报
回复
代码没问题,鉴定完毕
心随念 2018-03-19
  • 打赏
  • 举报
回复
这段代码是没有问题的。肯定是有值的。

不知道你在哪里取得list值
新晋的菜 2018-03-19
  • 打赏
  • 举报
回复
debug看代码,循环结束是否有值,或者是不是传别的地方的时候值丢了
xwn_2016 2018-03-19
  • 打赏
  • 举报
回复
在页面上取?看错了吧
菊花超人 2018-03-19
  • 打赏
  • 举报
回复
AttDayInfo attDayInfo = new AttDayInfo(); 放到for 循环外面
  • 打赏
  • 举报
回复
你第一张图的代码是在conroll层还是server层?用的什么框架;这些说一下方便定位;

81,092

社区成员

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

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