2012-12-21 3 views
-1

나는 start.jsp 페이지를 가지고있다. 나는 start.jsp 페이지입니다 때, 그러나jQuery GET 및 Spring MVC가 제대로 리디렉션되지 않음

@RequestMapping(value = "/myWidgets.html", method = RequestMethod.GET) 
public ModelAndView reloadAllTimeslots(@RequestParam("fizz") String fizz) { 
    ModelAndView mav = new ModelAndView(); 

    // Should redirect the user to Oranges.jsp. 
    mav.setViewName("fruits/Oranges"); 

    fruitDao.updateFruits(fizz); 

    logger.info("This prints to my log file perfectly fine, so I know this handler gets invoked."); 

    return mav; 
} 

을, 나는 myButton 페이지를 절대 클릭하지 : /myWidgets에서 듣고 컨트롤러, 그리고

$(document).ready(function() { 
    $("#myButton").click(function() { 
     // Injected from a Spring MVC controller returning a ModelAndView with 
     // modelAndView.addObject("fizz", myFizz); 
     var fizz = "${fizz}"; 

     // Synchronous HTTP Get to invoke page redirect. 
     $.get(
      "/myWidgets", 
      { 
       "fizz": fizz 
      }, 
      function(data) { 
       // ??? 
      } 
     ); 
    }); 
}); 

: 그것에서 나는 jQuery를 클릭 핸들러를 정의 Oranges.jsp으로 리디렉션됩니다. 그러나 컨트롤러의 logger 문 (위)은 내 서버 로그에 인쇄됩니다. 그래서 코드가 99 % 작동하고 있음을 알고 있습니다. 나는 원하는 사용자 경험을 얻지 못하고 있습니다. 왜 내가 여기로 방향이 바뀌지 않는지 아무도 몰라?

UPDATE :

뷰 리졸버 내가 사용 : 페이지 역사를 변경하거나 AJAX를 사용하고 있기 때문에 다른 URL (오렌지)로드 갈되지

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/views/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 
+0

프로젝트가 Oranges.jsp' /'과일이 포함되어 있습니까 예를 들면? –

+0

@BhavikAmbani - 예'fruits/Oranges.jsp'는 내 프로젝트의 JSP 페이지입니다. – IAmYourFaja

+0

yur 설정, 즉'applicationContext.xml' 또는'sprint-servlet.xml'을 넣으십시오. –

답변

3

. 실제로 대부분의 사람들은 동작을 위해 AJAX를 사용합니다. 위의 어떤 jQuery를 필요로하지

<form action="/myWidgets" method="post"> 
<input type="hidden" name="fizz" value="${fizz}" /> 
<button type="submit">Click</button> 
</form> 

: 당신이 다시로드 페이지를 원하는 경우

은 그냥 같은 일반 FORM의 예 submition 무언가를 사용합니다.

페이지를로드하고 AJAX를 사용하고 URL을 변경하려면 PJAX (푸시 스테이트 내역)와 같은 것을 봐야합니다.

특히 HTTP 시나리오의 라우팅 (또는 페이지로드)을 의미하는 경우 redirect이라는 단어를 사용하지 마십시오. 대부분의 웹 개발자를위한 리디렉션은 HTTP 301을 의미합니다. HTTP 301은 전통적인 양식의 POST 제출에는 매우 일반적이지만 위에서 수행 한 것은 아닙니다.

0

이 작업의 경우, 리디렉션을 수행하는 가장 좋은 방법은 (코멘트에서 언급 한 Luiggi와 같이) 서버에서 ajax 함수가 성공한 후에 javascript로 리디렉션하는 것입니다. ajax 요청으로 만 리디렉션 할 수는 없습니다.

@RequestMapping(value = "/myWidgets.html", method = RequestMethod.GET) 
@ResponseBody 
public String reloadAllTimeslots(@RequestParam("fizz") String fizz) { 
    fruitDao.updateFruits(fizz); 

    logger.info("This prints to my log file perfectly fine, so I know this handler gets invoked."); 

    return "success"; 
} 

과 HTML 파일 :

$(document).ready(function() { 
    $("#myButton").click(function() { 
     var fizz = "${fizz}"; 

     // Synchronous HTTP Get to invoke page redirect. 
     $.get(
      "/myWidgets", 
      { 
       "fizz": fizz 
      }, 
      function(data) { 
       // ??? 
      } 
     ).success(function() { window.location.replace("http://stackoverflow.com"); }) 
     .error(function() { alert("error"); }) 
     .complete(function() { alert("complete"); }); 
    }); 
}); 
관련 문제