2013-12-19 1 views
1

Вид озадачен ответом. Я вызываю тот же метод через ajax-вызов с другой страницы JSP, и я получаю другой HTTP response. Один дает 200, тогда как другой дает 400. Почему?400 Плохой запрос, когда тот же метод, который вызывается из разных JSP, получает 200 ответ

Единственное различие между к JSP страницы level/depth

примере

main.jsp is at level localhost/appname/main.htm 
    other.jsp is at level localhost/appname/myworld/other.htm 

URL, чтобы отправить Ajax вызов будет одинаковым для обоих

function getResponse(value) { 
     $.ajax({ 
      url: '${pageContext. request. contextPath}/posthere/callme.htm', 
      data: { 
       valueId: value, 
      }, 
      type: "POST", 
      success: function (data) { 
       if(data == true) { 
        console.log("Success: "); 
       } else { 
        console.log("Failed: "); 
       } 
      } 
     }); 
    } 

контроллера

@Controller 
@RequestMapping(value = "/posthere") 
@SessionAttributes({"userSession"}) 
public class MyController { 

    @RequestMapping(value = "/callme", method = RequestMethod.POST) 
    public @ResponseBody 
    boolean getcalled(@RequestParam("valueId") String valueId, 
           @ModelAttribute("userSession") UserSession userSession, 
           HttpServletResponse httpServletResponse) throws IOException { 
     if(userSession != null) { 
      //do your magic. Note: This logic is not getting invoked. I have a breakpoint here. 
      return true; 
     } 
     return false; 
    } 
} 
+1

, пожалуйста, напишите полный код, который выполняет запрос, а также ваш метод контроллера, который обрабатывает этот запрос. –

+0

Добавлено большую часть кода –

ответ

2

проверьте содержимое. Я столкнулся с этой проблемой, когда тип содержимого был X, и я отправлял что-то, что не эквивалентно X.

+0

Да, но я отправляю точно такой же вызов в обоих случаях. Код вырезается копией. Какая разница. Я знаю, что тип контекста для плохого ответа - Content-Type: text/html. Но просьба обоим из них точна. –

2

Проверьте, что вы передаете как valueId в обоих случаях.
Если это не может быть истолковано как String (что маловероятно) или нет, вы получите 400 Bad request.

Ваш случай, вероятно, второй: когда idValue является undefined, он не будет отправлено на всех, поэтому контроллер получает неполные данные - отсюда 400 Bad request.

+0

Хм. Это окажется чем-то очень незначительным. Снова посмотрю на него свежими глазами –

Смежные вопросы