2013-05-07 3 views
1

나는 봄 mvc 응용 프로그램에서 구성 패러다임에 대한 grails의 규칙을 모방하려고 노력했으며 핸들러 매핑을 자동화하는 것이 어렵다는 것을 알고 있습니다.grails가 핸들러 매핑을 구현 한 방법은 무엇입니까?

기본적으로 나는 이와 같은 컨트롤러가 있습니다.

@Controller 
@RequestMapping(value = {"/", "/contact"}) 
public class ContactController { 

    @Autowired 
    private ContactService contactService; 

    @RequestMapping(value = {"/","/index"}) 
    public String listContacts(Map<String, Object> map){ 
     map.put("contact", new Contact()); 
     map.put("contactList", contactService.listContact()); 
     return "contact"; 
    } 

    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public String addContact(@ModelAttribute("contact")Contact contact, BindingResult result){ 

     contactService.addContact(contact); 

     return "redirect:/contact/index"; 
    } 

    @RequestMapping(value = "/delete/{contactId}", method = RequestMethod.GET) 
    public String removeContact(@PathVariable("contactId")Long contactId){ 
     contactService.removeContact(contactId); 
     return "redirect:/contact/index"; 
    } 
} 

이제 "ControllerClassNameHandlerMapping"을 시도했지만 세 부분으로 된 URL이있는 것으로 보입니다.

나는 기본적으로 모든 요청이 자동으로 쉽지 않을 것이다 큰 도움이

답변

0

에게있을 것입니다 @RequestMapping

모든 포인터를 사용하지 않고, 적절한 컨트롤러와 액션에 매핑해야합니다. Grails 프레임 워크는 컨트롤러 인 클래스에 주석 및 기타 속성을 삽입하는 ASTTransformers를 많이 작성했습니다. grails-plugin-controllers의 소스 코드를 살펴보고 compiler.web 아래의 코드를보고 그들이하는 일을 볼 수 있습니다. 또한 ControllersGrailsPlugin을 살펴보면 부모 폴더 아래에 grails-app 디렉토리를보고있는 것을 볼 수있을 것입니다. 그렇게하기가 쉽지 않을 것입니다. 이 가장 빠른 방법, 어쩌면 포스트 컴파일 단계를, 귀하의 경우 AST 변환을 via ASM 만들기

0

UPDATE

하는 데 도움이 아마 희망?


그것은 그렇게 간단하지 않습니다 도움이되기를 바랍니다하지만 당신이 원하는 것은 다음 수행 할 가능성이 높습니다 :

  • 는 (클래스 로더에서 스캔 클래스 경로) 주석 프로세서를 쓰기 수집 컨트롤러 주석 및 일치하는 클래스
  • 사용자의 규칙에 따라 요청 매핑을 삽입하려면 Spring mvc API에 연결하십시오. pathVariables을 자동 주입에
  • 그럼 당신은
  • 컨트롤러 주석이 발견으로 스프링 MVC는 즉시 RequestMapping 주석과 재생을 기대하지 않을 경우

(또는 기본값 등, 메소드 매개 변수를 수집해야 (게시 빈 정의 프로세서 또는 유사한 메커니즘) ...

간단하지만 확실하게 가능하지는 않습니다 ...