看看泉水样品应用宠物护理。
患者控制器看起来像:
package org.springframework.samples.petcare.clients.patients;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping(value = "/owners/{ownerId}/patients/{patient}")
public class PatientController {
private final PatientRepository repository;
@Autowired
public PatientController(PatientRepository repository) {
this.repository = repository;
}
@RequestMapping(method = RequestMethod.GET)
public Patient get(Long ownerId, String patient) {
return repository.getPatient(ownerId, patient);
}
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public Patient getForEditing(Long ownerId, String patient) {
return repository.getPatient(ownerId, patient);
}
@RequestMapping(method = RequestMethod.PUT)
public void update(Patient patient) {
repository.savePatient(patient);
}
@RequestMapping(method = RequestMethod.DELETE)
public void delete(Long ownerId, String patient) {
}
}
这些动作究竟与jsp有关?
答案 0 :(得分:1)
它使用RequestToViewNameTranslator
bean来解析相应的视图名称。您可以选择在配置中定义此类型的bean。如果您没有明确定义视图转换器bean,那么DispatcherServlet
将自动实例化DefaultRequestToViewNameTranslator
。 DefaultRequestToViewNameTranslator
从请求网址中找出视图名称。
Spring参考指南应该在Web MVC部分中提供一些相关信息。
这基本上是Spring的“约定优于配置”原则的另一个例子。
答案 1 :(得分:1)
没有看到上下文定义,就不可能肯定地说。
但是,鉴于这看起来像一个REST控制器,Spring很可能会将返回值直接编组到它们的表示形式(XML或JSON,使用MarshallingView
)。在这种情况下,通常意义上 没有视图。
或者,再次根据上下文的配置方式,如果控制器没有指明要使用哪个视图,那么Spring会猜测,使用原始请求URI(例如,对/x
的请求将转发给查看/x.jsp
)。这是Spring的“约定优于配置”实践的一部分。
要确定哪个是哪个,您需要查看上下文中的ViewResolver
实现。