Passing parameter from controller to jsp in spring
38,175
In editJob
method your are returning only id of job with model attribute to edit.jsp
. But actually on edit.jsp page you need job object so you need to get job object by id add it as model attribute.
@RequestMapping("/edit/{jobId}")
public String editJob(@PathVariable("jobId") Integer jobId,Model model){
//model.addAttribute("id",jobId); this is wrong
Job job = jobService.getJobById(jobId);
//write method in jobservice to get job by id i.e. getJobById(Integer jobId);
model.addAttribute("job",job)
return "edit";
}
Author by
01000001
Updated on July 09, 2022Comments
-
01000001 almost 2 years
I have a controller method as follow.
@RequestMapping("/edit/{jobId}") public String editJob(@PathVariable("jobId") Integer jobId,Model model){ model.addAttribute("id",jobId); return "edit"; }
in which i am passing the jobId to get the instance of the job by id and returning "edit" string so that it maps to edit.jsp as per the InternalResourceViewResolver. But when i click on the link it goes to /edit/44 in which case 44 would be the id of the job for which the edit link belongs to. Finally i got the error stating no resource found.
home.jsp
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ page session="false"%> <html> <head> <link rel="stylesheet" type="text/css" href="<c:url value="/resources/css/style.css"/>" /> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" /> <title>Home</title> </head> <body id="main"> <div class="container"> <h2 style="color:white">All posted jobs</h2> <c:if test="${empty jobList}"> <h6>No Job Post Yet</h6> </c:if> <c:if test="${!empty jobList}"> <c:forEach items="${jobList}" var="job"> <div class="panel panel-info"> <div class="panel-heading"> <h3 class="panel-title">${job.title }</h3> </div> <div class="panel-body">${job.description }</div> <div class="panel-footer"> <a id="link" href="delete/${job.id }">Delete</a> <a id="link" href="edit/${job.id}">Edit</a> </div> </div> </c:forEach> </c:if> <section> <form:form method="post" action="add" modelAttribute="job" class="form-horizontal"> <div class="form-group" id="addForm"> <form:label class="control-label" path="title">Title:</form:label> <form:input class="form-control" path="title"/> <form:label class="control-label" path="description">Description</form:label> <form:textarea class="form-control" rows="5" path="description" /> <button class="btn btn-success"> <span class="glyphicon glyphicon-plus-sign"></span> Add a Job </button> </div> <a id="addJob" href="add">+</a> </form:form> </section> </div>
JobController.java
package com.job.src; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.job.src.model.Job; import com.job.src.services.JobService; @Controller public class JobController { @Autowired private JobService jobService; @RequestMapping(value= "/") public String listJobs(Map<String,Object> map){ map.put("job", new Job()); map.put("jobList", jobService.listJobs()); return "home"; } @RequestMapping(value= "/add", method=RequestMethod.POST) public String addJob(Job job){ jobService.addJob(job); return "redirect:/"; } @RequestMapping("/delete/{jobId}") public String deleteJob(@PathVariable("jobId") Integer jobId){ jobService.removeJob(jobId); return "redirect:/"; } @RequestMapping("/edit/{jobId}") public String editJob(@PathVariable("jobId") Integer jobId,Model model){ model.addAttribute("id",jobId); return "edit"; } }
edit.jsp
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <link rel="stylesheet" type="text/css" href="<c:url value="/resources/css/style.css"/>" /> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" /> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form:form method="post" action="editSuccess" modelAttribute="job" class="form-horizontal"> <div class="form-group" id="addForm"> <form:label class="control-label" path="title">Title: </form:label> <form:input class="form-control" path="title" /> <form:label class="control-label" path="description">Description</form:label> <form:textarea class="form-control" rows="5" path="description" /> <button class="btn btn-success"> <span class="glyphicon glyphicon-plus-sign"></span> Add a Job </button> </div> </form:form>
-
01000001 about 9 yearsThanx harshal let me try this. Actually i have been thinking about this since a while.
-
Mehandi Hassan over 6 years@ArpitParasana how to show model value in jsp page??
-
Harshal Patil over 6 years@MehandiHassan are you using JSP with JSTL or JSP only?
-
Mehandi Hassan over 6 years@HarshalPatil yes I am using JSP with JSTL
-
Harshal Patil over 6 years@MehandiHassan check out this stackoverflow.com/questions/34157233/…
-
Mehandi Hassan over 6 years@HarshalPatil thnx buddy