当前位置: 首页 > 知识库问答 >
问题:

找不到正确保存血细胞关系记录的方法

卫博学
2023-03-14
<form:form commandName="std" method="POST" >             
         <form:input type="text" path="name"/>
         <label>Subjects</label>
         <form:select path="subjects" multiple="multiple">
            <form:option value="English">English</form:option>
            <form:option value="Maths">Maths</form:option>
         </form:select>

     <input type="submit" value="Save">
</form:form>
@InitBinder
public void initSubjectBinder(WebDataBinder binder) {
    binder.registerCustomEditor(Subject.class,
    new PropertyEditorSupport() {
        @Override
        public void setAsText(String text) {
            Subject subject = new Subject();
            subject.setSubjectName(text);
            System.out.println("Saving Subject Object...");
            subjectService.save(subject);               
        }
    });     
}
@RequestMapping(value = "/save-std", method = RequestMethod.POST)
    public String saveStd(@ModelAttribute("std") Student std) {
        try {
            System.out.println("List size is " + std.getSubjects().size()); // Here it says List Size is 4 (if four subjects are selected)
            for (Subject subject : std.getSubjects()) {
                subject.setStudent(std); // Here it gives NPE see stackTrace for more info
                subjectService.update(subject);
            }
        } catch (Exception e) {
            System.out.println("Error is " + e.getMessage());
        }
        return "home";
    }
Saving Subject Object...
Hibernate: 
    insert 
    into
        Subject
        (studentId, subjectName) 
    values
        (?, ?)
Saving Subject Object...
Hibernate: 
    insert 
    into
        Subject
        (studentId, subjectName) 
    values
        (?, ?)
Saving Subject Object...
Hibernate: 
    insert 
    into
        Subject
        (studentId, subjectName) 
    values
        (?, ?)
Saving Subject Object...
Hibernate: 
    insert 
    into
        Subject
        (studentId, subjectName) 
    values
        (?, ?)
Hibernate: 
    insert 
    into
        Student
        (studentName) 
    values
        (?)
List size is 4 (Result of System.out.println("List size is " + std.getSubjects().size()); )
Error is null (Result of System.out.println("Error is " + e.getMessage());)

java.lang.NullPointerException位于com.app.web.homeController.saveStd(homeController.java:76)位于sun.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)位于sun.reflect.nativeMethodAccessorImpl.Invoke(未知源)位于sun.reflect.nativeMethodAccessorImpl.Invoke(未知源)位于java.lang.reflect.Method.Invoke(未知源)位于在org.springframework.web.servlet.mvc.Method.annotation.servletInvocableHandlerMethod.InvokeandHandle(servletInvocableHandlerMethod.java:110)在org.springframework.web.servlet.mvc.Method.annotation.requestMappingAdapter.invalleinter(requestMappingHandlerAdapter.java:705)在org.springframework.web.servlet.mvc.method.abstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)在org.springframework.web.servlet.dispatcherServlet.doDispatch(DispatcherServlet.java:959)在org.springframework.web.servlet.dispatcherServlet.doDispatch(DispatcherServlet.java:893)在在org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:842),在javax.servlet.http.httpservlet.service(httpservlet.java:731),在org.apache.catalina.core.applicationFilterChain.InternaldoFilter(applicationFilterChain.java:303),在org.apache.catalina.core.applicationFilterChain.doFilter(applicationFilterChain.java:208),在in.internaldoFilter(ApplicationFilterChain.java:241),org.apache.catalina.core.applicationFilterChain.doFilter(ApplicationFilterChain.java:208),org.apache.catalina.core.standardWrapperValve.invoke(StandardWrapperValve.invoke(StandardWrapperValve.java:220),org.apache.catalina.core.standardContextValve.invoke(StandardContextValve.inache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)在org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:957)在org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)在org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:423)在protocol.javA:620)在org.apache.tomcat.util.net.jioEndpoint$socketprocessor.run(jioEndpoint.java:316)在java.util.concurrent.threadpoolexecutor.runworker(未知源)在java.util.concurrent.threadpoolexecutor$worker.run(未知源)在org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run

现在很难理解NPE在哪里发生,为什么发生,我应该如何给学生分配科目?

共有1个答案

孟翰藻
2023-03-14

感谢@PavelHoral,他在做了一些我想出来的修改后指出了我的错误

@InitBinder
public void initSubjectBinder(WebDataBinder binder) {
    binder.registerCustomEditor(Subject.class,
    new PropertyEditorSupport() {
        @Override
        public void setAsText(String text) {
            Subject subject = new Subject();
            subject.setSubjectName(text);
            setValue(subject); // This is the turning point for me         
        }
    });     
}

在控制器方法中

@RequestMapping(value = "/save-std", method = RequestMethod.POST)
    public String saveStd(@ModelAttribute("std") Student std) {
        try {
            System.out.println("List size is " + std.getSubjects().size()); 
            for (Subject subject : std.getSubjects()) {
                subject.setStudent(std); 
                subjectService.save(subject);
            }
        } catch (Exception e) {
            System.out.println("Error is " + e.getMessage());
        }
        return "home";
    }

它奏效了,我的问题解决了。

 类似资料:
  • 这个问题已经被问了无数次,但是没有一个真正解决保存时的旋转问题。 这是我最初如何保存一个位图到我的设备: 以上内容保存了。 然后我看到了这个答案,但问题是它将已经保存的位图旋转到正确的方向。例如,如果您想将设置为,则可以这样做。但是,如果我想共享位图,或者想在设备库中打开它,方向仍然不正确。然后,我将不得不执行与上面相同的过程-等。这将导致同样的问题。 如何将

  • 我正试图在我的公司里用代理建立这个maven项目https://github.com/gsummer/cyNeo4j Pom中列出的依赖项在Maven Central repo中不存在。。它们位于: 我收到这个错误 [错误]无法在cyneo4j项目上执行目标:无法解决项目nl.maastrichtuniversity.networklibrary的依赖项:cyneo4j:bundle:1.3dev

  • 一个udit.java Chapter.java 审计控制员。JAVA

  • 有人能帮我摆脱困境吗我收到了这个警告信息 班级: jlc-log4j.properties文件:我这样指定

  • 问题内容: 我正在尝试建立与SOAP服务wsdl url的Kerberos身份验证连接。我能够成功建立连接并拨打服务电话。启动服务器后,我至少可以成功拨打一次服务电话。但是,在几个请求之后(1个或更多),我突然收到无效的令牌错误。一旦收到错误消息,以后的电话将无法使用,并且错误仍然存​​在。 如果重新启动服务器,则服务调用至少会再次工作一次。以上循环仍在继续。 我无法弄清楚为什么令牌突然失效,尽管

  • 请,任何人都可以帮助我找到正确的XPath来检索日期值“07/05/2018 04:45” 我试过但没有成功: /输入[@type=“text”]@值 //*[@id="start Date"]