How to render partial view in Spring MVC

I am trying to include a partial view in my jsp view page. How can i do that? i want to include my "addEmployeeContacts.jsp" to "addEmployee.jsp" page. addEmployee.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> Insert title here

Add Employee

Firstname: Lastname:

            <tr>
                <td>Date of Birth:</td>
                <td><form:input path="dob" type="date"/></td>
            </tr>
            <tr>
                <td colspan="2">
                <input type="submit" value="Add Employee">
                </td>
            </tr>
            </table>
        </form:form>
        <div>
        <jsp:include page="addEmployeeContacts.jsp">
         ${employeeContacts}
        </jsp:include>
        </div>
    </body>
    </html>
    </code>

And addEmployeeContacts.jsp

    <code>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
     <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <h1>Add Employee</h1>
        <form:form commandName="employeeContacts">
            <table>
            <tr>
                <td>Contact Type</td>
                <td><form:input path="contactType"/></td>
            </tr>

            <tr>
                <td>Details</td>
                <td><form:input path="contactValue"/></td>
            </tr>

            <tr>
                <td colspan="2">
                <input type="submit" value="Add Contacts">
                </td>
            </tr>
            </table>
        </form:form>
    </body>
    </html>
    </code>

addEmployeeContactController

package com.employee.comtroller;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.employee.model.Employee;
import com.employee.model.EmployeeContacts;
import com.employee.service.EmployeeContactsService;

@Controller
public class ContactsController {

    @Autowired
    private EmployeeContactsService employeeContactService;

    @RequestMapping(value="/addEmployeeContacts", method=RequestMethod.GET)
    public String addEmployeeContacts(@ModelAttribute("employeeContacts") EmployeeContacts employeeContacts,Model model){
        model.addAttribute(employeeContacts);
        return "addEmployeeContacts";

    }

    @RequestMapping(value="/addEmployeeContacts", method=RequestMethod.POST)
    public String addEmployeeContacts(@ModelAttribute("employeeContacts") EmployeeContacts employeeContacts,HttpSession session,BindingResult result){

        if(result.hasErrors()){
            System.out.println(result);
            return "addEmployeeContacts";
        }

        else{
            Employee employee = (Employee)session.getAttribute("employee");
            employeeContacts.setEmployee(employee);
            employeeContactService.save(employeeContacts);
        }

        return "redirect:index.jsp";
    }
}

Throwing error

org.apache.jasper.JasperException: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'employeeContacts' available as request attribute


If your localhost:8080/EmployeeManagement/addEmployee.html directly lands you in addEmployee.jsp due to a mapping that i don't see in your post, then you need to do the following in your jsp. This should make a request to your controller to get the included view. Hope this helps.

<div>
        <jsp:include page="/addEmployeeContacts">
         ${employeeContacts}
        </jsp:include>
 </div>

You need to use .tag as Main page and partial view as .jsp

for eg:

Create Layout.tag like this

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
 <%@tag description="Overall Page template" pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Home</title>
 </head>
 <body>
    <section class="content">
      <jsp:doBody />
    </section>
 </body>
</html>

Then Create a partial view like this

<%@taglib prefix="t" tagdir="/WEB-INF/tags/"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<t:Layout>    
   <div>
       your partial view html content
   </div>
</t:Layout>
链接地址: http://www.djcxy.com/p/48836.html

上一篇: Spring引导+休眠控制器

下一篇: 如何在Spring MVC中渲染部分视图