java的action中调用service的map集合值能调过来,但是为什么取出来就是null呢?

public String list() throws Exception{
Map<String, Object> map = service.list(column, kw, cp, ls);
allNews = (List<News>)map.get("allNews");
count = (Integer)map.get("count");
return "list";
}
在action中 用断点调试了一下,map中都有值,为啥allNews却是null呢,取不出来,我确定get()中的allNews与Service中的一样 还有其他原因么 菜鸟求大神指点!
最新回答
痘肤西施

2024-11-02 18:47:04

首先你要确定map中有键‘allNews’和所对应的value
其实,value是不是List<News>类型无所谓,如果有我上面所说的,取出‘allNews'时强制转换都不会为空。
既然你确定get()中的allNews与Service中的一样,我想最大的问题就是service中的map,在put进去就是null;

下面我测试了一下,如果你说的都对,是不会出问题的;
List< MapTest> l1=new ArrayList<MapTest>();
l1.add(new MapTest("nange", "nange"));
l1.add(new MapTest("fei", "fei"));
Map<String,List<MapTest>> m=new HashMap<String, List<MapTest>>();
m.put("a", l1);
List<MapTest> list=(List<MapTest>)m.get("a");
for (MapTest mapTest : list) {
/*System.out.println(mapTest.name);
System.out.println(mapTest.pass);*/
System.out.println(mapTest.getName());
System.out.println(mapTest.getPass());
}
追问
我在service层中  System.out.println(map.get("allNews"));都能打印出结果。。。
追答
如果在action中map.get("allNews")也能打印出结果,那肯定不会出这样的问题;
你的allNews怎么/在哪定义的
还有估计是service.list(column, kw, cp, ls)参数问题;
水样年华

2024-11-02 14:44:06

     Java中map集合如果取出来的值为null,那就证明给map集合赋值的语句并没有执行,导致结果为null的情况。

    一般给map填充数据可以通过如下语句:

 HashMap     hashmap     =     new     HashMap();   
        hashmap.put("Item0",     "Value0");   
        hashmap.put("Item1",     "Value1");   
        hashmap.put("Item2",     "Value2");   
        hashmap.put("Item3",     "Value3");

   如果没有上述的负值语句,当然取出来的数据都为null。

初夏の晨曦

2024-11-02 07:30:48

肯定是map中 没有allNews 是不是allNews写错了,写个简单的比如map.put("a",..);
map.get("a");,还有确定下你put进去的是不是一个null,可能放进去的就是null
追问
不是的  action中和service层 我仔细核对了  allNews没写错  真无语  好奇葩呀!
念一诺执千年

2024-11-02 07:01:20

map 中 allNews 对应的value 为NULL
追问
不是的  map中的allNews 有值的  但是取出来就为空
追答
你直接map.get有值的话 。那就是下面的转换有问题了
岛川奈

2024-11-02 12:19:42

"allNews",是不是这个和数据库中的不一致。