requestMapping 관련 질문입니다.
- 작성자 :
- 박*권
- 작성일 :
- 2016-08-11 17:52:20
- 조회수 :
- 1,241
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요.
개발을 하다가 url 목록을 보여주는 웹사이트를 만들게 되었는데요.
각각의 requestMapping의 value값을 리스트로 볼 수 있는 방법이 없을까요?
{"/test/a.do","/test/b.do","/test/c.do"} 이런식으로 jsp 쪽에 값을 넘겨주고 싶습니다.
현재 Controller 소스가 아래와 같이 되어있습니다.
@Controller
public class TestController {
@requestMapping(value = "/test/a.do")
public void a() {}
@requestMapping(value = "/test/b.do")
public void b() {}
@requestMapping(value = "/test/c.do")
public void c() {}
}
개발을 하다가 url 목록을 보여주는 웹사이트를 만들게 되었는데요.
각각의 requestMapping의 value값을 리스트로 볼 수 있는 방법이 없을까요?
{"/test/a.do","/test/b.do","/test/c.do"} 이런식으로 jsp 쪽에 값을 넘겨주고 싶습니다.
현재 Controller 소스가 아래와 같이 되어있습니다.
@Controller
public class TestController {
@requestMapping(value = "/test/a.do")
public void a() {}
@requestMapping(value = "/test/b.do")
public void b() {}
@requestMapping(value = "/test/c.do")
public void c() {}
}
A
박종권님 안녕하세요.
표준프레임워크센터입니다.
문의하신 기능은 공통컴포넌트 allinone 템플릿 프로젝트에서 참고하시면 되겠습니다.
allinone 프로젝트의 경우
기능을 메뉴와는 별도의 목록으로 표시하여 링크페이지를 구성하고 있는데
표준프레임워크에서 별도의 어노테이션을 구성하여
서비스가 올라갈 때 전체 기능목록을 구성하도록 제공하고 있습니다.
EgovComIndexController 클래스를 참고하시면 될 것 같습니다.
감사합니다.
p.s
sample 프로젝트에 적용한 테스트 코드
1. EgovSampleController 에 implements ApplicationContextAware 선언
2. 클래스변수, setter 메소드 추가
private ApplicationContext applicationContext;
private Map<Integer, IncludedCompInfoVO> map;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
System.out.println("EgovComIndexController setApplicationContext method has called!");
}
3. EgovSampleController.selectSampleList() 메소드에 적용
try {
/** test annotation info */
map = new TreeMap<Integer, IncludedCompInfoVO>();
Map<String, Object> myZoos = applicationContext.getBeansWithAnnotation(Controller.class);
System.out.println("How many Controllers : "+ myZoos.size());
for (final Object myZoo : myZoos.values()) {
Class<? extends Object> zooClass = myZoo.getClass();
Method[] methods = zooClass.getMethods();
System.out.println("Controller Detected {}"+ zooClass);
for (int i = 0; i < methods.length; i++) {
System.out.println("methods : [methods["+i+"].getName() : "+methods[i].getName()+"]");
if(null != methods[i].getAnnotation(RequestMapping.class))
System.out.println(" : [methods["+i+"].getAnnotation(RequestMapping.class) : "+
methods[i].getAnnotation(RequestMapping.class).value()[0]+"]");
}
}
} catch (Exception e) {
System.out.println(" exception e : "+ e);
}
표준프레임워크센터입니다.
문의하신 기능은 공통컴포넌트 allinone 템플릿 프로젝트에서 참고하시면 되겠습니다.
allinone 프로젝트의 경우
기능을 메뉴와는 별도의 목록으로 표시하여 링크페이지를 구성하고 있는데
표준프레임워크에서 별도의 어노테이션을 구성하여
서비스가 올라갈 때 전체 기능목록을 구성하도록 제공하고 있습니다.
EgovComIndexController 클래스를 참고하시면 될 것 같습니다.
감사합니다.
p.s
sample 프로젝트에 적용한 테스트 코드
1. EgovSampleController 에 implements ApplicationContextAware 선언
2. 클래스변수, setter 메소드 추가
private ApplicationContext applicationContext;
private Map<Integer, IncludedCompInfoVO> map;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
System.out.println("EgovComIndexController setApplicationContext method has called!");
}
3. EgovSampleController.selectSampleList() 메소드에 적용
try {
/** test annotation info */
map = new TreeMap<Integer, IncludedCompInfoVO>();
Map<String, Object> myZoos = applicationContext.getBeansWithAnnotation(Controller.class);
System.out.println("How many Controllers : "+ myZoos.size());
for (final Object myZoo : myZoos.values()) {
Class<? extends Object> zooClass = myZoo.getClass();
Method[] methods = zooClass.getMethods();
System.out.println("Controller Detected {}"+ zooClass);
for (int i = 0; i < methods.length; i++) {
System.out.println("methods : [methods["+i+"].getName() : "+methods[i].getName()+"]");
if(null != methods[i].getAnnotation(RequestMapping.class))
System.out.println(" : [methods["+i+"].getAnnotation(RequestMapping.class) : "+
methods[i].getAnnotation(RequestMapping.class).value()[0]+"]");
}
}
} catch (Exception e) {
System.out.println(" exception e : "+ e);
}