【问题标题】:How to get Dynamic Drop Down Box in JSP如何在 JSP 中获取动态下拉框
【发布时间】:2013-06-24 21:27:15
【问题描述】:

我想在 Spring MVC 中填充一个下拉框,我尝试这样做,但出现空指针异常

这是我的控制器:

public class CatalogueController  {
private CatalogueService catalogueService;
private PublisherService publisherService;
private SubjectService subjectService; 

   // some code and i generated setter and getter methods  
   ............

 @RequestMapping(value="/catalogue/new.action", method=RequestMethod.GET)  
   public ModelAndView newMember() throws Exception {
    ModelAndView mvc= null;
    mvc =   new ModelAndView("catalogue/catalogueForm", "catalogueForm", new CatalogueBase());
    mvc.addObject("copyDetailForm", new CatalogueCopyDetails());

    List<Publisher> publist = publisherService.getPublisherList();
    mvc.addObject("publist", publist);

    List<Subject> subjectlist = subjectService.getSubjectList();
    mvc.addObject("subjectlist", subjectlist);

    return mvc;
}  

这是我的服务方式:

    @Override
public List<Publisher> getPublisherList() {
    List<Publisher> list = publisherDAO.getPublisher();
    return list;
}
    @Override
public List<Subject> getSubjectList() {
    List<Subject> list = subjectDAO.getSubjects();
    return list;
}

这是我的 DAO 方法:

    @SuppressWarnings("unchecked")
public List<Publisher> getPublisher() {
      Query qry = getSession().createQuery("from Publisher");
        return qry.list();
}
    @SuppressWarnings("unchecked")
public List<Subject> getSubjects() {
      Query qry = getSession().createQuery("from Subject");
        return qry.list();
}

最后这是我的 JSP 页面:

  <form:form commandname="catalogueForm"    action="${pageContext.request.contextPath}/catalogue/create.action" method="post" modelAttribute="catalogueForm">

    <form:select path="publisher.id" id="publisher.id">
    <form:options items="${publist}" itemValue="id" itemLabel="name" />
    </form:select>                                                        

    <form:select path="subject.id" id="subject.id">                            
    <form:options items="${subjectlist}" itemValue="id" itemLabel="name" />
    </form:select>

   </form:form>

这是堆栈跟踪:

java.lang.NullPointerException 在 com.easylib.elibrary.webapp.controller.catalogue.CatalogueController.newMember(CatalogueController.java:80) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)

【问题讨论】:

    标签: spring jsp spring-mvc


    【解决方案1】:

    您在控制器的第 80 行获得了 npe,但我看不到您的问题是哪一行。

    我的猜测是您没有正确连接您的服务,并且“publisherService”或“subjectService”为空。

    【讨论】:

    • 第 80 行是这样的:List subjectlist = subjectService.getSubjectList();
    • 在这种情况下,唯一的选择是 subjectService 尚未初始化并且您正在调用空对象上的方法。
    • 不应该 private SubjectService subjectService 是 @Autowired private SubjectService subjectService 然后调用 subjectService。 getSubjectList()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2018-04-07
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多