@RequestMapping(value="edit/{postId}", method = RequestMethod.GET)
public String displayEditForm(Model model, @PathVariable int postId, Error error){
Artifact thePost = artifactRepository.findById(postId).get();
artifactRepository.save(thePost);
model.addAttribute("thePost", thePost);
return "edit";
}
@RequestMapping(value="edit", method=RequestMethod.POST)
public String processEditForm(@RequestParam(value="post_id") int post_id, @RequestParam(value="name") String name, @RequestParam(value="location") String location, @RequestParam(value="description") String description, Model model) {
Artifact thePost = artifactRepository.findById(post_id).get();
thePost.setName(name);
thePost.setLocation(location);
thePost.setDescription(description);
artifactRepository.save(thePost);
return "index";
}
I need help with this java code. It won't save when I edit an item.
Top comments (17)
You need to autowire the repository like below
in which case the OP would have gotten a Nullpointer, which wasn't shared. A bit more detail would be helpful but, certainly, not autowiring that dependency would cause problems.
I have no idea what a null pointer is
github.com/arotto8719/app
Trying But Iโm having trouble uploading photos. Any ideas?
github.com/arotto8719/app
The whole code is on here.
When we are creating a Spring web application, the business logic should be in a separate layer as a Service. So we have Controller, Service, Repositories, and Models. Please check this github.com/raviyasas/spring-boot-hibernate-demo.git
I have all that on there but I need to know what to put in the exact lines so I can save and edited item.
Something besides the Post or whatever.
I have artifact repository.
Am I supposed to copy and paste what you have or do I have to make mine similar to yours?
It is better if you can write your own code like mine or you can use my one. It is the best practice to write code in mvc pattern. That is why I mentioned it.
I already have that on top of home controller
@RequestMapping(value="edit/{postId}", method = RequestMethod.GET)
public String displayEditForm(Model model, @PathVariable int postId, Error error){
Artifact thePost = artifactRepository.findById(postId).get();
artifactRepository.save(thePost);
model.addAttribute("thePost", thePost);
return "edit";
}
This is the problem area. I need exact words and descriptions on what it's supposed to look like.
package org.launchcode.app.controllers;
import org.launchcode.app.data.Artifact;
import org.launchcode.app.data.ArtifactRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;
import javax.persistence.Id;
import javax.validation.Valid;
import java.util.HashMap;
@Controller
public class HomeController {
// model.addAttribute("database", "Database");
// model.addAttribute("images", "Images");
model.addAttribute("add", "Add");
model.addAttribute("search", "Search");
model.addAttribute("edit", "Edit");
model.addAttribute("delete", "Delete");
// model.addAttribute("thePost", thePost);
model.addAttribute("artifacts", artifactRepository.findAll());
HashMap actionChoices = new HashMap<>();
return "index";
}
// @GetMapping("view/{Images}")
// public String displayViewImagesId(Model model, @PathVariable int Id) {
// return "images";
// }
}
Ok moving on
This is my entire home controller.
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Fri May 22 17:14:24 CDT 2020
There was an unexpected error (type=Bad Request, status=400).
Required int parameter 'edit/{post_id}' is not present
org.springframework.web.bind.MissingServletRequestParameterException: Required int parameter 'edit/{post_id}' is not present
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:204)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:114)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:830)
Here's the error page.
What's the answer?
Hereโs the photo
thePost thePost didnโt work either
how do I add photos of this problem on my phone to this site?
This is for a class I'm in.
What it looks like
Post not supported