Dúvida Spring MVC 3.0

9 respostas
M

Pessoal estou com a seguinte dificuldade, estou fazendo um teste como o Spring MVC e não consigo passar um variável do controller para a jsp, segue os código:

Controller:

package controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.ModelAndView;

@Controller
public class IndexController {

	@RequestMapping("/index")
	public ModelAndView index() {
		ModelAndView mac = new ModelAndView();
		mac.addObject("message", "Hello World");
		return mac;
	}
}

e o JSP:

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
</head>
<body>
	<h1>${message}</h1>
</body>
</html>

O controle chamao jsp corretamente só não consigo acessar a variárvel no request ja criei no jsp para ver se não estava funcionando a EL mas esta ok.

Se alguem trabalha com este framework e puder ajudar

sds

9 Respostas

zoren

quando eu uso o Spring

eu seto as coisas como atributo no request

Mikhas

Eu adiciono um parametro ModelMap no metodo e adiciono os atributos nele.

Ai você pode retornar uma String no seu metodo… não sei se void funciona tambem

M

Mikhas,

Já utilizei o ModelMap o modo que o Zoren falou tem um exemplo? utilizando sem annotation funcionava nao consigo fazer com esta versão nova.

To achando que é configuração do spring segue meus arquivos de configuração

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<display-name>Gerador</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>*.htm</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

e o 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"
	xsi:schemaLocation="
        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="controllers" />

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>

</beans>
Mikhas

Você tem que por no RequestMapping “/index.htm” devido a pattern que você colocou ao mapear o servlet

M

Dae sim funciona o mapeamento só não consigo passar nada no request do java para o jsp

segue ae

1. package controllers; 2. 3. import org.springframework.stereotype.Controller; 4. import org.springframework.web.bind.annotation.RequestMapping; 5. import org.springframework.web.portlet.ModelAndView; 6. 7. @Controller 8. public class IndexController { 9. 10. @RequestMapping("/index") 11. public ModelAndView index() { 12. ModelAndView mac = new ModelAndView(); 13. mac.addObject("message", "Hello World"); 14. return mac; 15. } 16. }

na real to fazendo um hello world kk mas ta casca de funcionar eu tenho uma aplicação no spring mvc antigo e funciona na boa

Mikhas

Ai você poderia tentar usar o ModelMap que eu mencionei

M

Ja usei, me envia teus arquivos de confirguração se possível.

sds

Mikhas

No seu application context você tem que ter essa configuração;

<bean id="DefaultAnnotationHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean id="AnnotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
    
<context:component-scan base-package="com.jpmorgan.brz" />

E um exemplo de controller:

package com.jpmorgan.brz.echecklist.metadata.web;

import java.io.IOException;
import java.io.Writer;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.jpmorgan.brz.echecklist.metadata.Geography;
import com.jpmorgan.brz.echecklist.metadata.Holiday;
import com.jpmorgan.brz.echecklist.metadata.service.GeographyService;
import com.jpmorgan.brz.echecklist.metadata.service.HolidayService;
import com.jpmorgan.brz.util.persistence.EmptyResultSetException;

@Controller("HolidayController")
public class HolidayController {

	@Autowired
	private HolidayService holidayService;

	@Autowired
	private GeographyService geographyService;

	@RequestMapping("/administration/holidays.do")
	public String getHolidays(@RequestParam("geography.type") String type, @RequestParam("geography.code") String code,
			ModelMap model) throws IOException {
		try {
			Geography geography2 = this.geographyService.getGeography(type, code);
			model.addAttribute("geography", geography2);
			List<Holiday> holidays = this.holidayService.getHolidaysInYear(geography2);
			model.addAttribute("holidays", holidays);
		} catch (EmptyResultSetException e) {
			model.addAttribute("error", e.getMessage());
		}
		return "/administration/holidays.jsp";
	}
}
M

Resolvido, ficou assim a configuração do spring mvc

<?xml version="1.0" encoding="UTF-8"?>
<context:component-scan base-package="controllers" />

<bean id="viewResolver"
	class="org.springframework.web.servlet.view.UrlBasedViewResolver">
	<property name="viewClass"
		value="org.springframework.web.servlet.view.JstlView" />
	<property name="prefix" value="/WEB-INF/jsp/" />
	<property name="suffix" value=".jsp" />
</bean>
[/code]

web.xlm

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<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>*.htm</url-pattern>
	</servlet-mapping>

</web-app>

Controller

package controllers;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {

	@RequestMapping("/index")
	public ModelMap index() {
		ModelMap model = new ModelMap();
		model.addAttribute("teste", "Hello World");
		return model;
	}
}

Valeu pessoal só não entendi por que o ModelAndView não funcionou.

Abs

Criado 30 de outubro de 2009
Ultima resposta 4 de nov. de 2009
Respostas 9
Participantes 3