[SPRING] 뷰 레이어에서 spring mvc 컨트롤러의 URL을 찾을 수 있습니까?
SPRING뷰 레이어에서 spring mvc 컨트롤러의 URL을 찾을 수 있습니까?
나는 장고에서 역 URL 해결이라고 불리는 것을 필요로한다고 생각한다. 내가 이런 식으로가는 AddUserController 있다고하자 :
@Controller
@RequestMapping("/create-user")
public class AddUserController{ ... }
내가 원하는 것은이 컨트롤러에 URL을 동적으로 찾거나보기 (JSP)에서 매개 변수가있는 URL을 구성하는 몇 가지 방법입니다. 그래서 컨트롤러 전체에 URL을 하드 코딩 할 필요가 없습니다. Spring MVC에서도 가능합니까?
해결법
-
==============================
1.필요로하는 모든 컨트롤러 URL을 HashMap에 집계 한 Bean을 가지고 있고 컨트롤러 / URL 맵을 필요로하는 모든 모델에 추가하는 것이 고려 되었습니까? 각 Spring 컨트롤러는 init () 메서드를 호출 할 수있는 기능을 가지고 있습니다. 컨트롤러가 살아있을 때 사용할 수 있도록 init () 메서드의 컨트롤러 / URL 맵에 각 컨트롤러에 이름과 URL을 추가하게 할 수 있습니다.
필요로하는 모든 컨트롤러 URL을 HashMap에 집계 한 Bean을 가지고 있고 컨트롤러 / URL 맵을 필요로하는 모든 모델에 추가하는 것이 고려 되었습니까? 각 Spring 컨트롤러는 init () 메서드를 호출 할 수있는 기능을 가지고 있습니다. 컨트롤러가 살아있을 때 사용할 수 있도록 init () 메서드의 컨트롤러 / URL 맵에 각 컨트롤러에 이름과 URL을 추가하게 할 수 있습니다.
-
==============================
2.Java Reflection API로 해결할 수 있습니다. 사용자 정의 태그 라이브러리 생성. 메소드는 다음과 같습니다.
Java Reflection API로 해결할 수 있습니다. 사용자 정의 태그 라이브러리 생성. 메소드는 다음과 같습니다.
Class c = Class.forName("Your Controller"); for(Method m :c.getMethods()){ if(m.getName()=="Your Method"){ Annotation cc = m.getAnnotation(RequestMapping.class); RequestMapping rm = (RequestMapping)cc; for(String s:rm.value()){ System.out.println(s); } } }
당신이 마주 칠 수있는 가능한 문제는
1.Path 변수> this / pet / show / {id}와 마찬가지로 경로 이름과 값을 설정해야 return URL 앞에 String.replace ()를 대체해야합니다.
2. 메소드 재정의> 하나의 메소드 만 문제가되지 않습니다. if 메소드 override 당신이 정말로 원했던 Parameter Type의 지원 시퀀스를 제공 할 필요가있다. Method.getParametersType ()
3.Multiple URL to Single Method> @RequestMapping (value = { "/", "welcome"}). 그래서 쉬운 규칙은 첫 번째 규칙을 선택합니다.
스타일 URL과 같은 4.Ant> 이처럼 * .do는 마지막에 예를 들어 스타일과 같은 개미를 배치하여 여러 URL을 사용하는 것입니다. @RequestMapping (값 = { "/ 애완 동물", "/ 애완 동물 / *. 할"})
그래서 가능한 링크 태그 스타일은
<my:link controller="com.sample.web.PetController" method="show" params="java.lang.Integer"> <my:path name="id" value="1" /> </my:link>
여기서 parmas 속성은 메소드 오버라이드가없는 경우 선택 사항입니다.
나는 약간의 문제에 대해 생각하기 위해 떠났다. :)
-
==============================
3.JSP로 객체를 수동으로 연결하거나 관리 할 필요없이 모든 JSP 파일에서 요청 객체에 액세스 할 수 있습니다. 그래서 당신은 요청 객체로부터 URL 경로를 얻을 수 있고, JSP 암묵 객체로 google을 가질 수 있습니다.
JSP로 객체를 수동으로 연결하거나 관리 할 필요없이 모든 JSP 파일에서 요청 객체에 액세스 할 수 있습니다. 그래서 당신은 요청 객체로부터 URL 경로를 얻을 수 있고, JSP 암묵 객체로 google을 가질 수 있습니다.
http://www.exforsys.com/tutorials/jsp/jsp-implicit-and-session-objects.html을 시작할 수있는 페이지가 있습니다.
-
==============================
4.적절한 일치를 찾기 위해 사용하고있는 주석을 검사하는 taglib을 만들려고합니다.
적절한 일치를 찾기 위해 사용하고있는 주석을 검사하는 taglib을 만들려고합니다.
<x:url controller="myController"> <x:param name="action" value="myAction"/> </x:url>
Taglib 코드는 대략 비슷할 수 있습니다.
그것은 당신의 특정한 경우 (@RequestMapping 스타일)에서 작동 할 수도 있지만, 여러 매핑이있을 때 약간 털이 나올 가능성이 있습니다. 아마도 사용자 정의 주석을 사용하면 쉽게 만들 수 있습니다.
편집하다:
가장 많이 사용하는 DefaultAnnotationHandlerMapping에 의해 상속받은 AbstractUrlHandlerMapping :: getHandlerMap은 Handler에 대한 URL 맵을 반환합니다.
그래서 당신은 적합한 경기를 찾는 것을 반복 할 수 있습니다. "적합한 경기"는 당신이 원하는 모든 것입니다.
-
==============================
5.나는 5 월에이를 위해 개선 요청서를 제출했다. 다음을 따르거나 / 투표 / 코멘트 할 수 있습니다 : http://jira.springsource.org/browse/SPR-5779
나는 5 월에이를 위해 개선 요청서를 제출했다. 다음을 따르거나 / 투표 / 코멘트 할 수 있습니다 : http://jira.springsource.org/browse/SPR-5779
-
==============================
6.이 문제는 모든 경로가 등록되고 주문되는 중앙 집중식 라우터가 SpringMVC에 없다는 것입니다. 그런 다음 역방향 라우팅은 정적 프로세스가 아니며보기 계층의 경로 결정을 통합하기가 어려울 수 있습니다.
이 문제는 모든 경로가 등록되고 주문되는 중앙 집중식 라우터가 SpringMVC에 없다는 것입니다. 그런 다음 역방향 라우팅은 정적 프로세스가 아니며보기 계층의 경로 결정을 통합하기가 어려울 수 있습니다.
이 프로젝트에서 레일과 같은 중앙 집중식 라우터를 확인하고 뷰 레이어에서 역방향 라우팅을 확인하십시오.
-
==============================
7.Spring HATEOAS 라이브러리를 사용하면 컨트롤러에 링크 할 수 있습니다.
Spring HATEOAS 라이브러리를 사용하면 컨트롤러에 링크 할 수 있습니다.
오랫동안 나는 CGLib 프록시를 사용하여 이와 같은 것을 구현하려고 생각했지만 너무 게을 렀다. Spring HATEOS 라이브러리는 프록시 방식과 다양한 다른 방법을 가능하게합니다.
from https://stackoverflow.com/questions/1082759/can-i-find-the-url-for-a-spring-mvc-controller-in-the-view-layer by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] "Spring NamespaceHandler를 찾을 수 없습니다"오류 (0) | 2019.02.07 |
---|---|
[SPRING] Spring Restful Jax-RS 주석 지원 (0) | 2019.02.07 |
[SPRING] Spring @ 트랜잭션이 트랜잭션을 시작하지 않음 (0) | 2019.02.07 |
[SPRING] Spring MVC에서 Required String 매개 변수가 존재하지 않습니다. (0) | 2019.02.07 |
[SPRING] 봄에는 정리 코드를 넣기위한 종료 프로세스가 있습니까? (0) | 2019.02.07 |