Advertisement
Guest User

Untitled

a guest
Jan 12th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.49 KB | None | 0 0
  1. HTTP Status 500 – Internal Server Error
  2.  
  3. Type Exception Report
  4.  
  5. Message An exception occurred processing JSP page [/person.jsp] at line [39]
  6.  
  7. Description The server encountered an unexpected condition that prevented it from fulfilling the request.
  8.  
  9. Exception
  10.  
  11. org.apache.jasper.JasperException: An exception occurred processing JSP page [/person.jsp] at line [39]
  12.  
  13. 36: </c:if>
  14. 37: <tr>
  15. 38: <td>
  16. 39: <form:label path="name">
  17. 40: <spring:message text="Name"/>
  18. 41: </form:label>
  19. 42: </td>
  20.  
  21.  
  22. Stacktrace:
  23. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584)
  24. org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
  25. org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
  26. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
  27. javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
  28. org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  29. Root Cause
  30.  
  31. java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'person' available as request attribute
  32.  
  33. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  34. <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
  35. <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
  36. <%@ page session="false" %>
  37. <html>
  38. <head>
  39. <title>Person Page</title>
  40. <style type="text/css">
  41. .tg {border-collapse:collapse;border-spacing:0;border-color:#ccc;}
  42. .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;}
  43. .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}
  44. .tg .tg-4eph{background-color:#f9f9f9}
  45. </style>
  46. </head>
  47. <body>
  48. <h1>
  49. Add a Person
  50. </h1>
  51.  
  52. <c:url var="addAction" value="/person/add" >
  53.  
  54. <form:form action="${addAction}" commandName="person">
  55. <table>
  56. <c:if test="${!empty person.name}">
  57. <tr>
  58. <td>
  59. <form:label path="id">
  60. <spring:message text="ID"/>
  61. </form:label>
  62. </td>
  63. <td>
  64. <form:input path="id" readonly="true" size="8" disabled="true" />
  65. <form:hidden path="id" />
  66. </td>
  67. </tr>
  68. </c:if>
  69. <tr>
  70. <td>
  71. <form:label path="name">
  72. <spring:message text="Name"/>
  73. </form:label>
  74. </td>
  75. <td>
  76. <form:input path="name" />
  77. </td>
  78. </tr>
  79. <tr>
  80. <td>
  81. <form:label path="country">
  82. <spring:message text="Country"/>
  83. </form:label>
  84. </td>
  85. <td>
  86. <form:input path="country" />
  87. </td>
  88. </tr>
  89. <tr>
  90. <td colspan="2">
  91. <c:if test="${!empty person.name}">
  92. <input type="submit"
  93. value="<spring:message text="Edit Person"/>" />
  94. </c:if>
  95. <c:if test="${empty person.name}">
  96. <input type="submit"
  97. value="<spring:message text="Add Person"/>" />
  98. </c:if>
  99. </td>
  100. </tr>
  101. </table>
  102. </form:form>
  103. </c:url>
  104. <br>
  105. <h3>Persons List</h3>
  106. <c:if test="${!empty listPersons}">
  107. <table class="tg">
  108. <tr>
  109. <th width="80">Person ID</th>
  110. <th width="120">Person Name</th>
  111. <th width="120">Person Country</th>
  112. <th width="60">Edit</th>
  113. <th width="60">Delete</th>
  114. </tr>
  115. <c:forEach items="${listPersons}" var="person">
  116. <tr>
  117. <td>${person.id}</td>
  118. <td>${person.name}</td>
  119. <td>${person.country}</td>
  120. <td><a href="<c:url value='/edit/${person.id}' />" >Edit</a></td>
  121. <td><a href="<c:url value='/remove/${person.id}' />" >Delete</a></td>
  122. </tr>
  123. </c:forEach>
  124. </table>
  125. </c:if>
  126. </body>
  127. </html>
  128.  
  129. package com.ma3stro.crudperson.controller;
  130.  
  131. import com.ma3stro.crudperson.model.Person;
  132. import com.ma3stro.crudperson.service.PersonService;
  133. import org.springframework.beans.factory.annotation.Autowired;
  134. import org.springframework.beans.factory.annotation.Qualifier;
  135. import org.springframework.stereotype.Controller;
  136. import org.springframework.ui.Model;
  137. import org.springframework.web.bind.annotation.ModelAttribute;
  138. import org.springframework.web.bind.annotation.PathVariable;
  139. import org.springframework.web.bind.annotation.RequestMapping;
  140. import org.springframework.web.bind.annotation.RequestMethod;
  141.  
  142. @Controller
  143. public class PersonController {
  144.  
  145. private PersonService service;
  146.  
  147. @Autowired(required=true)
  148. public void setService(PersonService service) {
  149. this.service = service;
  150. }
  151.  
  152. @RequestMapping(value = "/persons", method = RequestMethod.GET)
  153. public String listPersons(Model model) {
  154. model.addAttribute("person", new Person());
  155. model.addAttribute("listPersons", service.listPersons());
  156. return "person";
  157. }
  158.  
  159. //add and update
  160. @RequestMapping(value = "/person/add", method = RequestMethod.POST)
  161. public String addPerson(@ModelAttribute("person") Person p) {
  162. if(p.getId() == 0)
  163. service.addPerson(p);
  164. else
  165. service.updatePerson(p);
  166. return "redirect:/persons";
  167. }
  168.  
  169. @RequestMapping(value = "/remove/{id}")
  170. public String removePerson(@PathVariable("id") int id) {
  171. service.removePerson(id);
  172. return "redirect:/persons";
  173. }
  174.  
  175. @RequestMapping("/edit/{id}")
  176. public String editPerson(@PathVariable("id") int id, Model model) {
  177. model.addAttribute("person", service.getPersonById(id));
  178. model.addAttribute("listPersons", service.listPersons());
  179. return "person";
  180. }
  181. }
  182.  
  183. package com.ma3stro.crudperson.service;
  184.  
  185. import com.ma3stro.crudperson.model.Person;
  186. import com.ma3stro.crudperson.repository.PersonRepository;
  187. import org.springframework.beans.factory.annotation.Autowired;
  188. import org.springframework.beans.factory.annotation.Qualifier;
  189. import org.springframework.stereotype.Service;
  190.  
  191. import javax.transaction.Transactional;
  192. import java.util.List;
  193.  
  194. @Service
  195. public class PersonServiceImpl implements PersonService {
  196.  
  197. private PersonRepository repository;
  198.  
  199. // Здесь нужен бин из AppContext или Autowired?
  200. @Autowired
  201. @Qualifier("personDAO")
  202. public void setRepository(PersonRepository repository) {
  203. this.repository = repository;
  204. }
  205.  
  206. @Override
  207. @Transactional
  208. public void addPerson(Person p) {
  209. repository.addPerson(p);
  210. }
  211.  
  212. @Override
  213. @Transactional
  214. public void updatePerson(Person p) {
  215. repository.updatePerson(p);
  216. }
  217.  
  218. @Override
  219. @Transactional
  220. public void removePerson(int id) {
  221. repository.removePerson(id);
  222. }
  223.  
  224. @Override
  225. @Transactional
  226. public List<Person> listPersons() {
  227. return repository.listPersons();
  228. }
  229.  
  230. @Override
  231. @Transactional
  232. public Person getPersonById(int id) {
  233. return repository.getPersonById(id);
  234. }
  235. }
  236.  
  237. package com.ma3stro.crudperson.repository;
  238.  
  239. import com.ma3stro.crudperson.model.Person;
  240. import org.hibernate.Session;
  241. import org.hibernate.SessionFactory;
  242. import org.springframework.stereotype.Repository;
  243.  
  244. import java.util.List;
  245.  
  246. @Repository
  247. public class PersonRepositoryImpl implements PersonRepository {
  248.  
  249. private SessionFactory sessionFactory;
  250.  
  251. public void setSessionFactory(SessionFactory sessionFactory) {
  252. this.sessionFactory = sessionFactory;
  253. }
  254.  
  255. @Override
  256. public void addPerson(Person p) {
  257. Session session = sessionFactory.getCurrentSession();
  258. session.persist(p);
  259. }
  260.  
  261. @Override
  262. public void updatePerson(Person p) {
  263. Session session = sessionFactory.getCurrentSession();
  264. session.update(p);
  265. }
  266.  
  267. @Override
  268. public void removePerson(int id) {
  269. Session session = sessionFactory.getCurrentSession();
  270. Person p = (Person) session.load(Person.class, new Integer(id));
  271. if(p != null)
  272. session.delete(p);
  273. }
  274.  
  275. @SuppressWarnings("unchecked")
  276. @Override
  277. public List<Person> listPersons() {
  278. Session session = sessionFactory.getCurrentSession();
  279. return session.createQuery("from person").list();
  280. }
  281.  
  282. @Override
  283. public Person getPersonById(int id) {
  284. Session session = sessionFactory.getCurrentSession();
  285. Person p = (Person) session.load(Person.class, new Integer(id));
  286. return p;
  287. }
  288. }
  289.  
  290. package com.ma3stro.crudperson.model;
  291.  
  292. import javax.persistence.*;
  293.  
  294. @Entity
  295. @Table(name = "person")
  296. public class Person {
  297.  
  298. @Id
  299. @Column(name = "id")
  300. @GeneratedValue(strategy = GenerationType.IDENTITY)
  301. private int id;
  302. @Column(name = "name")
  303. private String name;
  304. @Column(name = "country")
  305. private String country;
  306.  
  307. public int getId() {
  308. return id;
  309. }
  310.  
  311. public void setId(int id) {
  312. this.id = id;
  313. }
  314.  
  315. public String getName() {
  316. return name;
  317. }
  318.  
  319. public void setName(String name) {
  320. this.name = name;
  321. }
  322.  
  323. public String getCountry() {
  324. return country;
  325. }
  326.  
  327. public void setCountry(String country) {
  328. this.country = country;
  329. }
  330.  
  331. @Override
  332. public String toString() {
  333. return "Person{" +
  334. "id=" + id +
  335. ", name='" + name + ''' +
  336. ", country='" + country + ''' +
  337. '}';
  338. }
  339. }
  340.  
  341. <?xml version="1.0" encoding="UTF-8"?>
  342. <beans:beans xmlns="http://www.springframework.org/schema/mvc"
  343. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
  344. xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  345. xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  346. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  347. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  348. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
  349.  
  350. <!-- DispatcherServlet Context: defines this servlet's request-processing
  351. infrastructure -->
  352.  
  353. <!-- Enables the Spring MVC @Controller programming model -->
  354. <annotation-driven />
  355.  
  356. <!-- Handles HTTP GET requests for /resources/** by efficiently serving
  357. up static resources in the ${webappRoot}/resources directory -->
  358. <resources mapping="/resources/**" location="/resources/" />
  359.  
  360. <!-- Resolves views selected for rendering by @Controllers to .jsp resources
  361. in the /WEB-INF/views directory -->
  362. <beans:bean
  363. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  364. <beans:property name="prefix" value="/" />
  365. <beans:property name="suffix" value=".jsp" />
  366. </beans:bean>
  367.  
  368. <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  369. destroy-method="close">
  370. <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
  371. <beans:property name="url"
  372. value="jdbc:mysql://localhost:3306/person" />
  373. <beans:property name="username" value="root" />
  374. <beans:property name="password" value="root" />
  375. </beans:bean>
  376.  
  377. <!-- Hibernate 4 SessionFactory Bean definition -->
  378. <beans:bean id="hibernate4AnnotatedSessionFactory"
  379. class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  380. <beans:property name="dataSource" ref="dataSource" />
  381. <beans:property name="annotatedClasses">
  382. <beans:list>
  383. <beans:value>com.ma3stro.crudperson.model.Person</beans:value>
  384. </beans:list>
  385. </beans:property>
  386. <beans:property name="hibernateProperties">
  387. <beans:props>
  388. <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
  389. </beans:prop>
  390. <beans:prop key="hibernate.show_sql">true</beans:prop>
  391. </beans:props>
  392. </beans:property>
  393. </beans:bean>
  394.  
  395. <beans:bean id="personDAO" class="com.ma3stro.crudperson.repository.PersonRepositoryImpl">
  396. <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
  397. </beans:bean>
  398. <!--<beans:bean id="personService" class="com.ma3stro.crudperson.service.PersonServiceImpl">-->
  399. <!--<beans:property name="personDAO" ref="personDAO"></beans:property>-->
  400. <!--</beans:bean>-->
  401.  
  402. <context:component-scan base-package="com.ma3stro.crudperson.controller" />
  403. <context:component-scan base-package="com.ma3stro.crudperson.repository" />
  404. <context:component-scan base-package="com.ma3stro.crudperson.service" />
  405.  
  406. <tx:annotation-driven transaction-manager="transactionManager"/>
  407.  
  408. <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  409. <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
  410. </beans:bean>
  411.  
  412. </beans:beans>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement