【问题标题】:How can I disable JSP scripting in JSP 2.0 tag files如何在 JSP 2.0 标记文件中禁用 JSP 脚本
【发布时间】:2011-07-05 11:47:49
【问题描述】:

我想禁用 JSP 2.0 标记文件中的脚本和表达式。 我已成功禁用 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 模式更改为 *.jsp),但似乎不适用于标记文件。

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

我正在使用 Apache Tomcat 6.0.32。

要明确一点,JSP scriptlet 和表达式是我们现在应该不用的邪恶的内联 Java 代码,例如:

<% scriptlets %>
<%= expression %>

非常感谢。

【问题讨论】:

  • 你能发布你得到的错误/stackTrace吗?
  • 我没有收到任何错误。 JSP scriptlet 和表达式可以正常工作。如果他们在标记文件中编写 scriptlet 或表达式,我希望它们不工作并且让开发人员得到错误。我现在相信这是无法控制的。 配置仅适用于 JSP 文件而不适用于 TAG 文件。让我知道它是否适合您。

标签: jsp


【解决方案1】:

我想我也有同样的问题:我想为 .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 为空,对于我来说,前奏直接指定为空参数。

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

【讨论】:

    【解决方案2】:

    试试
    1. 重新部署应用程序。
    2.清理模块工作目录。
    3. 清除浏览器缓存。

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多