Mi primavera de aplicación MVC tiene una sola ContentNegotiatingViewResolver que define JSONView para la representación JSON resonses:adelante a una página HTML estática de Controlador
<mvc:annotation-driven/>
<context:component-scan base-package="world.domination.test"/>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="com.secondmarket.connector.springmvc.MappingJacksonJsonViewEx"/>
</list>
</property>
</bean>
Toda la aplicación se encuentra en la raíz url "miaplicacion". Todo funciona como lo necesito
La primera pregunta es: ¿cómo devolver una página estática html cuando se accede a una determinada URL? Por ejemplo, cuando se accede a la primavera URI/miaplicacion/prueba me gustaría hacer una página html /TestStuff.html que reside en la carpeta webapp raíz.
que siguió adelante y escribió un controlador simple:
@Controller
@RequestMapping("test")
public class TestConnector {
@Autowired
private RestTemplate tpl;
@RequestMapping(method = RequestMethod.GET)
public String get() {
return "/TestStuff.html";
}
@RequestMapping(method = RequestMethod.POST)
public String post(@RequestParam("url") String url, @RequestParam("data") String data) {
return tpl.postForObject(url, data, String.class, new HashMap<String, Object>());
}
}
El método get() se supone que le diga la primavera para hacer una TestStuff.html, pero en su lugar me sale un error que dice que la vista con el nombre "/TestStuff.html" no se encuentra.
La segunda pregunta es cómo evitar la necesidad de poner extensión a la URL. En mi ejemplo, cuando uso /miaplicacion/test en lugar de /myapp/test.html mi ContentNegotiatingViewResolver utiliza una vista json que hace que {} (llaves vacías)
Cualquier punteros son muy apreciados.
Desde su configuración de 'ContentNegotiatingViewResolver' No puedo entender lo que está tratando de lograr. Esta resolución es aplicable cuando el mismo recurso se puede representar en diferentes representaciones. Si algunos de los recursos se representan en JSON, mientras que otros son HTML, se necesita otra configuración de resolución. Este – axtavt