저는 상속 한 Spring 웹 애플리케이션을 가지고 있으며 현재 확장 중입니다. 나는 방대한 스프링 XML 파일과 리팩토링 프로세스를 통해 살았습니다. 결코 되돌아 오지 않을 시간입니다. 주석을 사용하여 새로운 컨트롤러 코드를 작성하기 시작했습니다.JSP에서 Spring MVC 매핑 (주석)을 참조하기위한 "우수 사례"가 있습니까?
RequestMappings이 주석으로 정의 된 컨트롤러가 있고 컨트롤러의 최종 정적으로 URL을 넣었으므로 코드의 다른 위치에서 반환 값으로 참조 할 수 있습니다. 그러나 JSP를 만들려고 할 때 모든 것이 벽에 부딪치게 보인다.
이렇게하려면 "가장 좋은"방법이 있습니까? (또는 어떤 식 으로든 전혀?) ...
는 ....
public class MyController {
/**
* Magic string that defines the base URL for this action
*/
public static final String BASE_URL = "/do_my_smart_action.do";
/**
* Magic string defining parameter name
*/
public static final String PARAM_ID = "id";
...
@RequestMapping(value = BASE_URL, method = RequestMethod.GET)
public ModelAndView beginSmartAction(
@RequestParam(required = false, value = PARAM_ID) Long id,
ModelMap model) {
// Do clever stuff
return new ModelAndView(TARGET_JSP_NAME, model);
}
}
을 설명하기 위해 및 URL 뭔가처럼 쓸 수 있도록 내 JSP에서 원하는
<a href="<${BASE_URL}?${PARAM_ID}=${object.id}">Do Smart Action</a>
코드에서 BASE_URL의 정의를 변경하면 JSP의 링크가 "그냥 작동"하도록합니다.
기록을 위해 현재 Spring 3.0.6, Java 1.5 및 glassfish 3.1.2를 사용 중입니다. 전자는 비교적 쉽게 부딪 칠 수 있습니다. 자바 1.7로 이동하려고하면 이상한 일들이 코드와 함께 일어나는 것처럼 보이므로 이동이 더 문제가 될 수 있습니다.
감사의 말을 전합니다.
내 자신의 질문에 부분적으로 대답 함 ... 자세한 조사 결과는 http://www.javaranch.com/journal/200601/Journal200601.jsp#a3이 보일만한 장소임을 나타냅니다. – Bignose
1) @ Controller 주석을 사용하여 컨트롤러, XML 구성 필요 없음. 2)'ModelMap model'에서 key/value 쌍으로'BASE_URL'을 설정하지 않았습니다. 다른 ELparameters와 비슷하게 뷰에서 어떻게 접근 할 것으로 예상합니까? 항상 상수를 모델에 추가 할 메소드를 작성할 수 있습니다. 디자인 방법은 사용자에게 달려 있습니다. –
1) 알고 있습니다. 저는 이것을 상속 받았으며 (다른 것들 사이에서) 주석을 사용하도록 efactoring했습니다. 2) 감사합니다. 여느 때와 마찬가지로, 핵심은 의문의 여지가 있습니다. 문제는 다른 사람이 주도하는 jsp에서이 컨트롤러를 연결하는 것입니다. 그래서 Bar 객체 집합을 포함하는 Foo 객체 (및 연관된 컨트롤러 및 JSP)가 있고 Foo JSP에서 Bar JSP로 연결하려고합니다.당신이 말한 바로는, _target_ 컨트롤러의 URL을 _source_ 컨트롤러의'ModelMap'에 추가하는 것입니다. – Bignose