C:if没有读取HashMap对象值

时间:2016-10-27 17:17:42

标签: java jsp

我将一些对象实例映射到Form。 为此,我打算在JSP页面中使用c:foreach循环。

我使用spring MVC并且模型正确地传递给JSP,除了有一个HashMap的属性,它将被c:foreach循环读取。

查找

Jsp(analysis / analysisConfig):

private static Map<IAnalysisType, Boolean> analysisTypes = new HashMap<IAnalysisType, Boolean>();

    //Configure here all analysis Types to be shown
    static{
        analysisTypes.put(new AnalysisRMS(), false);
    }

    @RequestMapping(value="configuration", method= RequestMethod.GET)
    public String config(@ModelAttribute("analysisForm") AnalysisForm form, @ModelAttribute("fileName") String fileName, Model model){
        if(fileName!= null && fileName!=""){
            form.setAnalysisTypes(AnalysisController.analysisTypes);
            form.setFileName(fileName);
            model.addAttribute("analysisForm", form);
            return "analysis/analysisConfig";
        } else {
            return "index";
        }

Analysis Controller类的代码:

public interface IAnalysisType {

    public String getName();
    public String getMessage();
    public AnalysisResult execute(String samples);

}

用于多态的接口:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'reverse'
})
export class ReversePipe {
  transform(arr) {
    var copy = arr.slice();
    return copy.reverse();
  }
}

我在这里缺少什么?

1 个答案:

答案 0 :(得分:-1)

当您使用<c:forEach>迭代Map时,迭代中的每个项目都是 Map.Entry 的实例。这就是var="type"中的每个项目都会返回Map.Entry的实例。

所以给出你的例子:

<c:forEach var="type" items="${analysisTypes}">
   Key is ${type.key}
   Value is ${type.value}
</c:forEach>