我正在尝试创建一个下拉列表,它在我的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>
答案 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 .
}