1

web.xml のすべての JSP でスクリプトレットを無効にしました。

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

しかし、次のように使用されているカスタム tagLibs をインポートする必要があります。

<%@ taglib prefix="utils" uri="/tags-utils" %>

スクリプトレットを使用せずにインポートするにはどうすればよいですか? また、次の使用を避けるにはどうすればよいですか?

<%@ page language="java" contentType="text/html; charset=UTF-8" %>

スクリプトレットを削除するのは、複数の開発者が作成したプロジェクトでスクリプトレットが混乱するのを避けるためです。

スクリプトレットを使用せずにインポートを変更することができない場合、または以外の使用のためにどのように無効にします<%@ taglib<%@ page?

から変更しようとした

<%@ taglib prefix="s" uri="/struts-tags" %>

<jsp:directive.tagLib prefix="s" uri="struts-tags" />

しかし、サーブレットは私にエラーをスローします:

[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/portal].[jsp]] (http-localhost-127.0.0.1-80-3) Servlet.service()サーブレット JSP が例外をスローした場合: org.apache.jasper.JasperException: /index.jsp(2,18) <jsp:directive.tag ディレクティブはタグ ファイルでのみ使用できます

他にやらなければならないことはありますか?

4

2 に答える 2

2

JSP 2.2 仕様

JSP 1.3.10.1 JSP 構文の EBNF 文法

ScriptlessBody ::= ( ( ‘&lt;%--’ JSPCommentBody )
                   | ( ‘&lt;%@’ DirectiveBody )
                   | ( ‘&lt;jsp:directive.’ XMLDirectiveBody )
                   | ( ‘&lt;%!’ <TRANSLATION_ERROR> )
                   | ( ‘&lt;jsp:declaration’ <TRANSLATION_ERROR> )
                   | ( ‘&lt;%=’ <TRANSLATION_ERROR> )
                   | ( ‘&lt;jsp:expression’ <TRANSLATION_ERROR> )
                   | ( ‘&lt;%’ <TRANSLATION_ERROR> )
                   | ( ‘&lt;jsp:scriptlet’ <TRANSLATION_ERROR> )
                   | ( ‘${‘ ELExpressionBody )
                   | ( ‘#{‘ ELExpressionBody )
                   | ( ‘&lt;jsp:text’ XMLTemplateText )
                   | ( ‘&lt;jsp:’ StandardAction )
                   ( ( ‘&lt;/’ ExtraClosingTag )
                   | ( ‘&lt;‘ CustomAction CustomActionBody )
                   | TemplateText
                   )*

だから、いつscripting-invalid=true

違法

<%
<%!
<%=
<jsp:scriptlet
<jsp:declaration
<jsp:expression

法的

<%@
<jsp:directive.
<jsp:

以下は合法です。

 <%@ taglib prefix="utils" uri="/tags-utils" %>

「アプリ コンテキスト uri」+「/tags-utils」(taglib のコンテキスト相対パス) が「taglib 絶対 uri」にマップされている限り。

または、次を試すことができます。

 <%@ taglib prefix="utils" uri="http://www.mycorp/utiltags" %>  // use your absolute taglib URI

また

 <%@ taglib prefix="utils" uri="uri_path_relative_to_jsp_uri" %>  // no leading "/"

また

 <%@ taglib prefix="utils" tagdir="/WEB-INF/tags" %> // include subdir if approp

以下が考案された。jsp:directive.tagLibタグは定義されていません。使用しないでください。

 <jsp:directive.tagLib prefix="s" uri="struts-tags" />

それ以外の:

 <%@ page language="java" contentType="text/html; charset=UTF-8" %>

試す:

 <%@ page contentType="text/html; charset=UTF-8" %>  // language is for scriptlets
于 2013-05-08T02:08:55.120 に答える
-1

<%@taglibおよび<%@pageはディレクティブであり、スクリプトレットではありません。

スクリプトレットには<%

または、次のように書くこともできます

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
于 2012-12-08T18:49:25.103 に答える