【问题标题】:jsp errors IsUserInRole() and othersjsp 错误 IsUserInRole() 和其他
【发布时间】:2017-01-20 04:25:15
【问题描述】:

我正在尝试重新部署一个落入我手中的项目。这是一个 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 上。

【问题讨论】:

    标签: eclipse maven jsp servlets


    【解决方案1】:

    难怪它会产生编译错误:方法拼写错误:它是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 容器(和版本),它与特定的运行时捆绑在一起。所以你必须在编译的时候完成那个runtime。

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

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

    【讨论】:

    • jsp中的方法名是对的。 “get”是 Eclipse 在问题和标记窗口中添加的内容。请参阅更新 Q 的编辑。
    • 那也没有帮助。我只是导入了 javax.servlet.*
    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2020-08-29
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多