jsp错误IsUserInRole()和其他人

时间:2016-09-12 17:00:40

标签: eclipse maven jsp servlets

我正在尝试重新部署落入我手中的项目。这是一个maven项目,它使用的依赖项中有javax.servlet-api:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>  
        <version>2.5</version>  
    </dependency>

对此,我在jsp-s中遇到错误,包括以下内容。

  

对于HttpServletRequest类型,未定义getIsUserInRole()方法。

  

此行找到多个注释:        - 未定义的属性名称        (ID)。        - 未知标签(画布)。        - 未定义的属性名称        (方式)。

为此,我将servlet版本更改为3.0.1:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>  
        <version>3.0.1</version>  
    </dependency>

但是,我仍然有同样的错误。构建路径上的jstl版本(相关)是1.2。

如何解决这个问题?

为什么我要显式定义任何类型的servlet-api,servlet容器不具备它吗? 如果是这样,如何告诉JBoss使用servlet版本3.0.1?

我在Eclipse Neon上运行JBoss 7.1。我试着在Eclipse Mars上做同样的事情。

TIA。

// -------------------------------

编辑:

getIsUserInRole()是Eclipse问题报告中出现的名称。这是一个快照:

enter image description here

方法名称在代码中拼写正确:

<c:if test="${not empty pageContext.request.userPrincipal}">
    <c:if test="${pageContext.request.isUserInRole('ROLE_ADMIN')}">
                <button class="custombutton" id="admin" style="font-size: 150%; height:80px; width: 100%">Administration [Admin. Profile]</button>

    </c:if>
</c:if>

此外,Eclipse正在报告所有画布项目的警告 - 标签,属性名称等无法识别它们:

enter image description here

// -----------------

EDIT2:

这个项目有Spring 3.2.8。它能以某种方式拦截servlet定义吗?但是,pom.xml依赖关系层次结构不显示它。

此外,我没有更改项目中的任何Spring依赖项,它们与现在部署和运行的相同。

这看起来像构建问题,但是我看不到它。以前的版本部署在IntelliJ上。

1 个答案:

答案 0 :(得分:0)

难怪它会产生编译错误:该方法拼写错误:它是isUserInRole,而不是getIsUserInRole。结果是,在标签中,必须始终省略动词

${pageContext.request.userInRole('ROLE_ADMIN')}
  

为什么我要明确定义任何类型的servlet-api,servlet容器不具备它吗?如果是这样,如何告诉JBoss使用servlet版本3.0.1?

在编译中,Web容器尚不可用,因此您实际上需要将类路径放在JEE运行时(servlet-api.jar)上。你做得很好。

  

如果是这样,如何告诉JBoss使用servlet版本3.0.1?

AFAIK没办法:您选择要使用的servlet容器(和版本),它与特定的运行时捆绑在一起。因此,编译时必须完成该运行时。

关于canvas标记的警告:确保您使用 HTML5 进行编码:将此声明放在JSP的开头:

<%@ page language="java" 
    import="..."
%><!DOCTYPE html>
<html>
    ...
</html>