如何在JSP 2.0标记文件中禁用JSP脚本

时间:2011-07-05 11:47:49

标签: jsp

我想在JSP 2.0标记文件中禁用scriptlet和表达式。 我已成功地在JSP文件中禁用了scriptlet和表达式,但我仍然可以在JSP中使用的标记文件中使用scriptlet。

我在web.xml中已经厌倦了但是没有效果:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.tag</url-pattern>
        <scripting-invalid>true</scripting-invalid>
    </jsp-property-group>
</jsp-config>

以上适用于JSP文件(如果url-pattern更改为* .jsp)但似乎不适用于标记文件。

我的所有标记文件都与模式* .tag匹配。

我正在使用Apache Tomcat 6.0.32。

为了清楚起见,JSP scriptlet和表达式是我们今天应该做的邪恶的内联Java代码,例如:

<% scriptlets %>
<%= expression %>

非常感谢。

2 个答案:

答案 0 :(得分:2)

我认为我有同样的问题:我想为.tag文件使用包含前奏功能,并且我以与您相同的方式配置选项组。

我在JspConfig.findJspProperty()中找到了tomcat源代码中的负责代码(至少在我的tomcat 7.0.22中):

// JSP Configuration settings do not apply to tag files
if (jspProperties == null || uri.endsWith(".tag")
            || uri.endsWith(".tagx")) {
        return defaultJspProperty;
}

defaultJspProperty的定义如下:

defaultJspProperty = new JspProperty(defaultIsXml,
        defaultIsELIgnored,
        defaultIsScriptingInvalid,
        null, null, null,
        defaultDeferedSyntaxAllowedAsLiteral, 
        defaultTrimDirectiveWhitespaces,
        defaultDefaultContentType,
        defaultBuffer,
        defaultErrorOnUndeclaredNamespace);

其中defaultIsScriptingInvalid为null,对于mye,prelude直接指定为null参数。

这解释了我们的问题,但我找不到它以这种方式实施的原因......

答案 1 :(得分:-2)

尝试