Spring MVC,JSP - 必需的布尔参数'guest'不存在

dan*_*nte 1 java spring jsp spring-mvc

我正在尝试为访客和用户执行某些操作,并且我做了一些事情,但它不起作用,标题中出现错误.

/ home和/ logged/home使用相同的jsp

我希望为了"注册"而不会为已登录的用户显示"登录"

MainController:

@Controller  
public class MainController {

DBConnection db = new DBConnection();

@RequestMapping(value = "/home.html", method = RequestMethod.GET)
public ModelAndView HomePage(@RequestParam boolean guest) {

    User user = new User();
    user.setGuest(guest);
    user.isGuest();

    ModelAndView main = new ModelAndView("Main");

    return main;

}

@RequestMapping(value = "/logged/home.html", method = RequestMethod.GET)
public ModelAndView homePageforUsers(@RequestParam boolean loggeduser) {

    User user = new User();
    user.setUser(loggeduser);
    user.isUser();

    ModelAndView main = new ModelAndView("Main");

    return main;

}
Run Code Online (Sandbox Code Playgroud)

main.jsp中:

<c:if test="${user.isUser()}">
<div class="cart">
<a href="http://localhost:8080/OnlineShop/cart.html"
        style="text-decoration: none; color: #000"> Cart </a>
        <div class="logout">
<a href="http://localhost:8080/OnlineShop/home.html"
        style="text-decoration: none; color: #000"> Log out </a>
</div>
</div>
</c:if>

<c:if test ="${user.isGuest()}">
<div class="register">
<a href="http://localhost:8080/OnlineShop/registration.html"
        style="text-decoration: none; color: #000"> Register </a>
</div>
<div class="login">
<a href="http://localhost:8080/OnlineShop/login.html"
        style="text-decoration: none; color: #000"> Log in </a>
</div>
</c:if>
Run Code Online (Sandbox Code Playgroud)

Ali*_*ani 5

<a href="http://localhost:8080/OnlineShop/home.html"
Run Code Online (Sandbox Code Playgroud)

此部分触发对您的HomePage控制器的调用,并且其中没有guest可用的查询参数,因此Spring MVC抱怨缺少该必需参数.

默认情况下,带注释的参数RequestParam必需的.所以,你要么让它们成为可选的,例如:

@RequestParam(required=false) boolean guest
Run Code Online (Sandbox Code Playgroud)

或为他们提供一些合理的默认值,如下所示:

@RequestParam(defaultValue="false") boolean guest
Run Code Online (Sandbox Code Playgroud)

如果您不能使用建议的解决方案,请在每个请求中提供这些必需参数,在您的情况下,如下所示:

<a href="http://localhost:8080/OnlineShop/home.html?guest=false"
        style="text-decoration: none; color: #000"> Log out </a>
Run Code Online (Sandbox Code Playgroud)