복붙노트

[SPRING] Spring : 클라이언트가 보낸 요청이 구문 상 올바르지 않습니다 ().

SPRING

Spring : 클라이언트가 보낸 요청이 구문 상 올바르지 않습니다 ().

안녕하세요, 리디렉션 중 다음 오류가 발생했습니다.

브라우저에 표시되는 URL은 다음과 같습니다. localhost : 8080 / Project / menu / main / home / 0 여기에서 리디렉션이있는 클래스를 먼저 - "from", 두 번째 "to":

 /*
 * Get all possible values of menu and generate correct url to pages controllers
 * 
 */

@Controller
@SessionAttributes("menu")
public class MainMenuController {


    @ModelAttribute
    public Menu createMenu() {
        return new Menu();
    }

    @RequestMapping(value = "/menu", method = RequestMethod.GET)
    public String mainMenuResolver(@ModelAttribute Menu menu) {
        menu.setMainMenu("first");
        return "forward:/menu/first";
    }

    @RequestMapping(value = "/menu/{mainMenu}", method = RequestMethod.GET)
    public String subMenuResolver(@PathVariable String mainMenu, @ModelAttribute Menu menu) {
        menu.setMainMenu(mainMenu);
        menu.setSubMenu("home");
        return "forward:/menu/first/home";
    }

    @RequestMapping(value = "/menu/{mainMenu}/{subMenu}", method = RequestMethod.GET)
    public String secMenuResolver(@PathVariable String mainMenu, @PathVariable String subMenu, @ModelAttribute Menu menu) {
        menu.setMainMenu(mainMenu);
        menu.setSubMenu(subMenu);
        menu.setSecMenu("0");

        if (menu.getMainMenu().equals("first")){
            return "redirect:/menu/main/"+menu.getSubMenu()+"/"+menu.getSecMenu();
        }

        if (menu.getMainMenu().equals("second")){
            return "redirect:/menu/religion/"+menu.getSubMenu()+"/"+menu.getSecMenu();
        }

        return "redirect:/menu/main/"+menu.getSubMenu()+"/"+menu.getSecMenu();
    }
}

이급:

@Controller
@SessionAttributes("menu")
public class FirstPageController {

    @ModelAttribute
    public Menu createMenu() {
        return new Menu();
    }

    @RequestMapping(value = "/menu/main/{subMenu}/{secMenu}", method = RequestMethod.GET)
    public ModelAndView menuResolver(@PathVariable String mainMenu, @PathVariable String subMenu,@PathVariable String secMenu, @ModelAttribute("menu") Menu menu) {
        menu.setMainMenu(mainMenu);
        menu.setSubMenu(subMenu);
        menu.setSecMenu(secMenu);       

        if (menu.getSubMenu().equals("home")){
            String title = "Project - Home Page";
            return new ModelAndView("MainPage", "title", title);
        }

        String title = "Project - Home Page";
        return new ModelAndView("MainPage", "title", title);
    }
}

해결 : 나는 두 번째 클래스의 메서드에서 초과 매개 변수를 해결했습니다.

해결법

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

    1.이와 같은 경우 log4j 설정에서 org.springframework.web 로그 수준을 DEBUG로 설정하는 것이 매우 유용합니다

    이와 같은 경우 log4j 설정에서 org.springframework.web 로그 수준을 DEBUG로 설정하는 것이 매우 유용합니다

    <logger name="org.springframework.web">
        <level value="DEBUG" />
        ...
    </logger>
    

    예 : 매개 변수가 없거나 필수 유형으로 변환 할 수없는 경우 로그에 예외 세부 사항이 있습니다.

  2. ==============================

    2.필자의 경우이 오류의 원인은 브라우저 (Chrome)가 날짜를 잘못된 형식으로 서버에 전송하여 서버가이를 알지 못했기 때문입니다 그것을 파싱하는 방법.

    필자의 경우이 오류의 원인은 브라우저 (Chrome)가 날짜를 잘못된 형식으로 서버에 전송하여 서버가이를 알지 못했기 때문입니다 그것을 파싱하는 방법.

  3. ==============================

    3.ike3에서 말했듯이 자세한 로그를 사용하면 나를위한 솔루션을 찾는 데 많은 도움이되었습니다. 필자의 경우 이름이 지정되지 않은 @PathVariable과 변수 자체가 일치하지 않았습니다.

    ike3에서 말했듯이 자세한 로그를 사용하면 나를위한 솔루션을 찾는 데 많은 도움이되었습니다. 필자의 경우 이름이 지정되지 않은 @PathVariable과 변수 자체가 일치하지 않았습니다.

    이 같은:

    @RequestMapping("/user/{uname}")
    public String doSomething(@PathVariable String username) { ...
    

    "uname"과 "username"의 차이점에 주목하십시오! 내부적으로 제기되지 않은 예외가 있었고 로그를 INFO 수준으로 설정할 때까지는 볼 수 없었습니다.

  4. ==============================

    4.내 경우에는 변환의 문제이기도하지만 Spring은 Integer를 기대했지만 String을 입력했습니다. 컨트롤러에 매개 변수로 전달한 내용을 확인하십시오.

    내 경우에는 변환의 문제이기도하지만 Spring은 Integer를 기대했지만 String을 입력했습니다. 컨트롤러에 매개 변수로 전달한 내용을 확인하십시오.

  5. from https://stackoverflow.com/questions/12228484/spring-the-request-sent-by-the-client-was-syntactically-incorrect by cc-by-sa and MIT license