Disaccoppiamo il modello dalla vista. Nell'esempio precedente avevamo un accoppiamento perchè nel modello era cablato direttamente il percorso della pagina jsp di arrivo.
return new
ModelAndView("WEB-INF/jsp/hello.jsp", "now", now);
Adottiamo un approccio semplice: settiamo un prefisso e un suffisso nel InternalResourceViewResolver. Modifichiamo e dichiariamo un ingresso viewResolver . Scegliendo potremo usare JSTL in combinazione con un pachetto di messaggi e avremo il supporto per l'internazionalizzazione.
springapp2-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
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- the
application context definition for the springapp2 DispatcherServlet -->
<bean name="/hello.htm"
class="springapp2.web.HelloController"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix"
value="/WEB-INF/jsp/"></property>
<property name="suffix"
value=".jsp"></property>
</bean>
</beans>
Riscriviamo il controller ,HelloController.java:
package springapp2.web;
import
org.springframework.web.servlet.mvc.Controller;
import
org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import
javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.Date;
public class HelloController implements
Controller {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView
handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String now = (new Date()).toString();
logger.info("Returning hello view with "
+ now);
return new ModelAndView("hello", "now",
now);
}
}
Adesso nel controller la vista è indicata solo come hello. il prefisso (il percorso) e il suffisso (l'estensione) sono indicati nello springapp-servlet.xml .
Nessun commento:
Posta un commento