首页 > 解决方案 > 带有 VarArgs 的方法首先从 JSP 调用

问题描述

我有带有重载方法的用户类:

    public boolean checkAccessAvoid(Role... groups) {
        ...
    }

    public boolean checkAccessAvoid(String string) {
        ...
    }

控制器

    @RequestMapping(method = RequestMethod.GET, value = "list")
    public ModelAndView list(...) {
        ModelAndView mav = new ModelAndView();

        mav.addObject("user", Session.getUser());
        mav.addObject("notAllowedToAddGameUsers", AccessUtils.GroupArrayToString(Permission.MAIN_GAME_NOT_ALLOWED_TO_ADD_GAME));

        mav.setViewName("home");

        return mav;
    }

主页.jsp

<c:set var="test" value="${user.checkAccessAvoid(notAllowedToAddGameUsers)}" />
<% System.out.println( "result = " + pageContext.findAttribute("test") ); %>

问题是当我尝试获取我的列表时遇到错误:

SEVERE: Servlet.service() for servlet [appServlet] in context with path [] threw exception [An exception occurred processing JSP page /WEB-INF/views/home.jsp at line 26

26:                  <c:set var="test" value="${user.checkAccessAvoid(notAllowedToAddGameUsers)}" />
27:                  <% System.out.println( "result = " + pageContext.findAttribute("test") ); %>
javax.el.ELException: Cannot convert '-Guest-GameDeveloper-GameQA-TechnicalWriter' of type class java.lang.String to class com.domain.enums.Role

我尝试将 varargs 参数更改为数组并且它有效,但是有很多地方使用 Role 类型参数调用方法。所以我想了解为什么会发生这个错误。

标签: javajspvariadic-functions

解决方案


推荐阅读