试图在我的jsp页面中创建一个下拉列表

时间:2016-08-26 06:24:27

标签: spring jsp spring-mvc drop-down-menu

我正在尝试创建一个下拉列表,它在我的jsp页面中会有动态值,但是获得异常,我试图在这里使用spring form标签。

WebController.java

 @RequestMapping(value="/addAchivement",method=RequestMethod.GET)
public String addAchievements(){

    Object object=null;
    try {
        object = genericAppProcessor.checkLogin(username, password,null,null);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    SchoolLoginDetails sld=new SchoolLoginDetails();
    sld=(SchoolLoginDetails)object;
    List<GroupDetails> list=new ArrayList<GroupDetails>();
    list=(List<GroupDetails>) sld.getGroupDetails();
    Set<Object> addedClass = new HashSet<Object>();
    Set<Object> addedSection = new HashSet<Object>();

    Map referenceData = new HashMap();
    Map<Object,Object> classs = new LinkedHashMap<Object,Object>();        

    for(int i=0;i<list.size();i++){
    Object obj=list.get(i).getClazz();
    Object objj=list.get(i).getSection();
    addedClass.add(obj);
    addedSection.add(objj);
    List<Object> convertTolist=new ArrayList<Object>(addedClass);
    classs.put(convertTolist.get(0),convertTolist.get(0));
    addedClass.clear();
    }



    referenceData.put("classList",classs);

    return "addAchivement"; 
}

addAchivement.jsp

<form:form method="POST" role="form" action="/GenericApp/addWebAchievement" enctype="multipart/form-data">

<form:select path="classs">
        <form:options items="${classList}" />
</form:select>

例外: -

 org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/addAchivement.jsp at line 72

<div class="input-field col s12 m4 l3"  >
   <!--Line 72 -->   <form:select path="classs" class="text-black custom-select">
                      <form:options items="${classList}" />
                     </form:select>

1 个答案:

答案 0 :(得分:2)

您需要返回模型和视图,而不是仅返回视图使用以下代码:

// Java代码

     @RequestMapping(value="/addAchivement",method=RequestMethod.GET)
     public ModelAndView addAchievements(){
   Object object=null;
try {
    object = genericAppProcessor.checkLogin(username, password,null,null);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
SchoolLoginDetails sld=new SchoolLoginDetails();
sld=(SchoolLoginDetails)object;
List<GroupDetails> list=new ArrayList<GroupDetails>();
list=(List<GroupDetails>) sld.getGroupDetails();
Set<Object> addedClass = new HashSet<Object>();
Set<Object> addedSection = new HashSet<Object>();

Map referenceData = new HashMap();
Map<Object,Object> classs = new LinkedHashMap<Object,Object>();        

for(int i=0;i<list.size();i++){
Object obj=list.get(i).getClazz();
Object objj=list.get(i).getSection();
addedClass.add(obj);
addedSection.add(objj);
List<Object> convertTolist=new ArrayList<Object>(addedClass);
classs.put(convertTolist.get(0),convertTolist.get(0));
addedClass.clear();
}



referenceData.put("classList",classs);
ModelAndView mav = new ModelAndView("addAchivement", referenceData);

return mav; 

}

您正在为jsp

中的类分配路径
 <!--Line 72 -->   <form:select path="classs" class="text-black custom-select">

但是您没有从此类变量可以映射的模型发送任何内容,因此您需要在弹簧形式中使用modelAttribute,以便此类变量可以映射。

例如。 :你需要创建一个具有类成员的类对象:

下面是java代码更改:

  referenceData.put("classList",classs);
  referenceData.put("classObject",class); // Here class is a object that has    class attribute by which that value in jsp will bind .
  ModelAndView mav = new ModelAndView("addAchivement", referenceData);

这是Jsp代码更改:

<form:form method="POST" role="form" action="/GenericApp/addWebAchievement" enctype="multipart/form-data" modelAttribute="classObject">

<form:select path="classs">
        <form:options items="${classList}" />
</form:select>

示例类对象:

 public Class{

 String classs ;

 // getter setter for classs member variable .

  }