2015-03-08 4 views
1

Я пытаюсь включить частичный вид на страницу просмотра jsp. Как я могу это сделать? Я хочу добавить мою страницу «addEmployeeContacts.jsp» на страницу «addEmployee.jsp». addEmployee.jsp <% @ язык страница = "Java" CONTENTTYPE = "текст/html; кодировка = ISO-8859-1" pageEncoding = "ISO-8859-1" %> <% префикс @ TagLib =» форма "uri =" http://www.springframework.org/tags/form "%> <% @ taglib prefix =" fmt "uri =" http://java.sun.com/jsp/jstl/fmt " %> Вставить название здесь Как отредактировать частичный вид в Spring MVC

Добавить Сотрудник

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> 

И 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"; 
    } 
} 

Бросив ошибка

org.apache.jasper.JasperException: java.lang.IllegalStateException: Ни BindingResult, ни обычный целевой объект для 'employeeContacts' имени компоненты доступны как атрибут запроса

+0

так что вопрос тогда? – SMA

+0

Ошибка отображения: org.apache.jasper.JasperException: java.lang.IllegalStateException: Ни BindingResult, ни обычный целевой объект для bean-name 'employeeContacts' не доступен как атрибут запроса –

+0

И какой URL-адрес отображается в адресной строке при получении этой ошибки? –

ответ

0

Если локальный: 8080/EmployeeManagement/addEmployee.html непосредственно помещает вас в addEmployee.jsp из-за сопоставления, которое я не вижу в вашем сообщении, тогда вам нужно сделать следующее в jsp. Это должно сделать запрос к вашему контроллеру, чтобы получить включенное представление. Надеюсь это поможет.

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

Вы должны использовать .tag в качестве главной страницы и частичный вид в .jsp

для например:

Создать Layout.tag как этот

<%@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> 

Тогда Создать частичное вид

<%@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>