Comment puis-je accéder à un personnalisé du haricot dans Spring MVC contrôleur de classe?
Je suis nouveau sur le Printemps, de sorte s'il vous plaît garder avec moi.
Je regardais ce guide (http://java2t.com/233/using-spring3-jdbctemplate-rowmapper-to-return-list-of-records/).
Il utilise un "normal" projet java dans eclipse. Je suis en train de simuler l'exemple d'utilisation de projet web dynamique, mais je ne suis pas avoir une chance de réussir.
mon web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"
version="3.0">
<display-name>StaffDirectory</display-name>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
mon spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="org.flinders.staff.directory" />
<mvc:annotation-driven />
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:view-controller path="/" view-name="index" />
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="PVHmg57bE4" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="staffDirectoryDAO" class="org.flinders.staff.directory.dao.impl.StaffDirectoryDAOImpl">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="staffDirectoryService" class="org.flinders.staff.directory.services.impl.StaffDirectoryServiceImpl">
<property name="staffDirectoryDAO" ref="staffDirectoryDAO" />
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" >
<value>org.springframework.web.servlet.view.tiles2.TilesView</value>
</property>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
</beans>
mon contrôleur de classe
package org.flinders.staff.directory.controllers;
import java.util.List;
import org.flinders.staff.directory.models.database.StaffModel;
import org.flinders.staff.directory.models.misc.SearchModel;
import org.flinders.staff.directory.services.StaffDirectoryService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class StaffDirectoryController {
private StaffDirectoryService staffDirectoryService;
@RequestMapping("/SearchResults")
public void showSearchResults() {
//StaffDirectoryService staffDirectoryService = (StaffDirectoryService) getServletContext().getBean("StaffDirectoryService");
List<StaffModel> staffList = staffDirectoryService.viewStaffResults();
for (StaffModel staffModel : staffList) {
System.out.println(staffModel.getStaffID() + " : "
+ staffModel.getFirstname() + " : " + staffModel.getSurname());
}
System.out.println();
}
@RequestMapping("/SearchForm")
public ModelAndView showSearchForm() {
return new ModelAndView("search/SearchForm", "SearchModel", new SearchModel());
}
}
Je ne rencontre pas d'édition/redémarrage de mon Tomcat instance. Mais en allant sur mon navigateur, mon code
déclenche une exception sur ce code (Liste staffList = staffDirectoryService.viewStaffResults();) dans ma classe de contrôleur.
Des idées? Merci!!!! 🙂
pastebin.com/YTFEz0u0 C'est ce que j'ai sur la console à l'intérieur de l'éclipse.
OriginalL'auteur mrjayviper | 2012-12-03
Vous devez vous connecter pour publier un commentaire.
l'injection de Service Objet à l'aide de Autocâblés Annotation
première... l'importation de Autocâblés Annotation
et injecter de l'Objet de Service par l'Annotation.
OriginalL'auteur namxee
Il semble que vous n'êtes pas d'injecter de l'
StaffDirectoryService
, donc elle est nulle lorsque vous appelezviewStaffResults()
, jetant unNullPointerException
.L'ajout de la
@Autowired
annotation devrait vous obtenir passé ce:Quelle est la version de Printemps utilisez-vous? À moins de 2,5?
Êtes-vous manuellement placer les pots dans votre WEB-INF? Est le coeur du Printemps jar dans votre WEB-INF?
J'ai copié tous les Pots que j'ai besoin d'un dossier lib dans WEB-INF, puis les ajouter à la build path. Je suis en 3.1.3 printemps.
capture d'écran de Pots j'ai inclus/charge = i1162.photobucket.com/albums/q535/mrjayviper/Untitled-1.jpg. Vous ne savez pas si c'est important mais je suis en utilisant les dernières STS Version: 3.1.0.VERSION Build Id: 201210061306
OriginalL'auteur rees