2010-01-19 58 views
1

看着泉水樣本應用寵物護理。春季寵物護理樣本,控制器操作如何與jsp鏈接?

患者控制器看起來像:

包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的動作究竟是什麼?

回答

1

沒有看到上下文定義,無法肯定地說。

但是,考慮到這看起來像一個REST控制器,Spring可能會直接將返回值編組爲表示(XML或JSON,使用MarshallingView)。在這種情況下,沒有意義,通常意義上說。如果控制器沒有指出要使用哪個視圖,那麼Spring將使用原始請求URI(例如,請求/x將被轉發到視圖/x.jsp)來猜測,然後再根據上下文如何配置, 。這是Spring的「約定配置」實踐的一部分。

要決定哪個是哪個,您需要查看哪個ViewResolver實現在上下文中。

1

它使用一個RequestToViewNameTranslator bean來解析相應的視圖名稱。您可以選擇在您的配置中定義這種類型的bean。如果您沒有明確定義視圖轉換器bean,則DispatcherServlet將自動實例化一個DefaultRequestToViewNameTranslatorDefaultRequestToViewNameTranslator計算出請求URL中的視圖名稱。

Spring參考指南應該在Web MVC部分有關於此的一些信息。它基本上是Spring「配置約定」原則的另一個例子。