2016-03-31 2 views
2

Я создаю веб-приложение Spring MVC. Проблема в том, что один метод называется дважды, и я не знаю почему.Метод контроллера пружины называется дважды

@RequestMapping(value="/profile/{id}", method = RequestMethod.GET) 
public String displayUserProfile(@PathVariable String id) { 

    System.out.println("asdasddsasd"); 

    return "account/userProfile"; 

} 

Я прокомментировал многие строки этого метода, но все еще не работает. Также попытался вернуть другую точку зрения ... не повезло.

В консоли (ULR запросы записываются):

/demo/account/profile/f91b3a38-6921-41e0-98b7-58dff5cb1152 
asdasddsasd 
/demo/account/profile/0 
asdasddsasd 

После второго вызова метода tihs, это будет мой взгляд

Любой другой метод отлично работает. Кто-нибудь знает, в чем проблема?

* Я также прочитал подобный вопрос от here..nothing помог

LE: что я сказал в комментариях. Что смешно в том, что если я установил o model для представления, то во втором вызове метода мое представление get получило бы модель от первого вызова. (при втором вызове, с идентификатором 0, модель равна нулю)

+0

очистить свой проект и снова запустить –

+0

Можете ли вы попробовать включить весенние журналы отладки?и посмотреть, что происходит – ravi

+0

subbu, я тоже не работал. Ravi, я попробую – UnguruBulan

ответ

1

я, наконец, получил некоторое время, чтобы найти решение здесь. Пробовал много вещей, но это не сработало.

я заменил @PathVariable с @RequestParam и URL-адрес не обращался в два раза :)

+3

Хорошо. Но почему?!?!? –

+0

Может быть, из-за активации CORS? Однако у меня такая же проблема и до сих пор не найдено решение, поэтому я не могу принять это как ответ. – Timmy

+0

Это решение не сработало для меня. –

0

Звучит как проблема на стороне клиента.

  • Откройте ваш браузер, введите /демо/счета/профиль/f91b3a38-6921-41e0-98b7-58dff5cb1152 и проверить журналы вероятность, что вы будете видеть только один вход

  • Теперь запустите свой клиентский код и проверьте сетевые запросы к службе. Если вы вызываете контроллер из браузера, например, на вкладке Chrome F12-> Network.

Я знаю, что его вид очевидно, но я думаю, что нет ничего действительно «необычного» в этом контроллере, поэтому она должна быть больше на уровне общего потока. В этом случае, может быть, его лучше, чтобы отслеживать HTTP трафик и посмотреть, сколько/когда/как он генерирует запросы к контроллеру

Надеется, что это помогает

+0

Уже пробовал первое, но он по-прежнему называется дважды. Я попробую ваш второй совет – UnguruBulan

+0

Это, конечно, нет, я использую вкладку soap ui и вкладку в браузере из инструментов разработчика, поэтому я знаю, что только один запрос отключается. – Timmy

1

Я также наблюдал один запрос GET вызывая метод контроллера дважды выполнить. Проблема возникла при обращении к службе с помощью браузера Chrome (проблема не возникала при использовании Postman). В моем случае виновником явилось расширение JSONView Chrome.

Я определил причину, используя вкладку «Сеть» инструментов разработчика Chrome. Он показал, что мой запрос GET запрашивается два раза. Второй запрос был инициирован content.js, который является файлом JavaScript в комплекте с JSONView.

После того как я отключил расширение JSONView, запрос GET через Chrome вызовет метод контроллера только один раз.

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