복붙노트

[SPRING] 스프링 MVC 컨트롤러에서 동적 url / prj / noticeOpen / 2를 매핑하는 방법

SPRING

스프링 MVC 컨트롤러에서 동적 url / prj / noticeOpen / 2를 매핑하는 방법

안녕하세요. 다음 URL에 어려움을 겪고 있습니다.

<a href="/noticeOpen/2">dynamicLink</a>

다음 컨트롤러 방법으로 매핑 :

@RequestMapping(value="/noticeOpen/{quesId}") 
public ModelAndView noticeOpen(@ModelAttribute("NoticeForm") NoticeForm noticeForm,
                               ModelMap model,
                               @PathVariable("quesId") Integer quesId){
    System.out.println(quesId);
    return new ModelAndView("/noticeOpen","noticeForm",noticeForm);

}

앵커 dynamicLink를 클릭하면 문제가 시작되고 컨트롤을 내 컨트롤러로 전송하지 않고 대신 브라우저의 주소 표시 줄에 다음과 같이 표시합니다.

http://127.0.0.1:8080/prj/noticeOpen/2/WEB-INF/pages/noticeOpen.jsp

또한 applicationContext.xml에서 다음과 같은 매핑이 있습니다.

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
</bean>

이것은 컨트롤러의 @RequestMapping 및 @PathParam 메서드 서명 ({anchor에서 questionId를 제거하십시오})에서 {quesId}를 제거하면 정상적으로 작동합니다.

http://127.0.0.1:8080/prj/noticeOpen 

그러나 그것은 역동적으로 들리지 않으며 나의 요구 사항을 충족시킵니다.

을 포함한다.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

   <display-name>Spring Web MVC Application</display-name>

  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
               org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
  </servlet-mapping>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>
  <listener>
        <listener-class>
        org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>   
</web-app>

최신 정보

/ noticeOpen / {quesId}에 대한 새 컨트롤러를 만들고 이제 컨트롤을 얻지 만 다음 방법의 동작을 이해할 수는 없습니다. NoticeController를 아래에서 살펴본 다음 그 결과를 얻으십시오.

  @Controller
public class NoticeController {


    @RequestMapping(value="/noticeOpen/{quesId}") 
    public ModelAndView noticeOpen(@ModelAttribute("NoticeForm") NoticeForm noticeForm,ModelMap model,@PathVariable("quesId") Integer quesId){

        return new ModelAndView("noticeOpen","noticeForm",noticeForm);

    }

    @RequestMapping(value="/noticeOpen") 
    public ModelAndView noticeOpen(@ModelAttribute("NoticeForm") NoticeForm noticeForm,ModelMap model){

        return new ModelAndView("noticeOpen","noticeForm",noticeForm);

    }

@RequestMapping (value = "/ noticeOpen") noticeOpen.jsp를 수정하도록 리디렉션합니다. @RequestMapping (value = "/ noticeOpen / {quesId}") 다음 오류 페이지로 리디렉션됩니다.

HTTP Status 404 - /prj/noticeOpen/WEB-INF/pages/noticeOpen.jsp
type Status report
message /prj/noticeOpen/WEB-INF/pages/noticeOpen.jsp
description The requested resource is not available.
Apache Tomcat/6.0.36

해결법

  1. ==============================

    1.다음과 같이 applicationContext.xml에서 접두어 값을 변경하십시오.

    다음과 같이 applicationContext.xml에서 접두어 값을 변경하십시오.

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix">
                <value>/WEB-INF/pages/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
    </bean>
    

    WEB-INF 전에 슬래시. 작동 할 것입니다.

  2. from https://stackoverflow.com/questions/17697899/how-to-map-dynamic-url-prj-noticeopen-2-in-spring-mvc-controller by cc-by-sa and MIT license