首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入自定义tagLib,而不使用<%@之类的指令

导入自定义tagLib,而不使用<%@之类的指令
EN

Stack Overflow用户
提问于 2012-12-08 18:45:10
回答 2查看 4.3K关注 0票数 1

我在web.xml中禁用了所有JSP中的脚本:

代码语言:javascript
复制
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <scripting-invalid>true</scripting-invalid>
    </jsp-property-group>
</jsp-config>

但是,我需要导入一些自定义的tagLibs,它们是这样使用的:

代码语言:javascript
复制
<%@ taglib prefix="utils" uri="/tags-utils" %>

如何在不使用scriptlet的情况下导入它?此外,如何避免使用以下内容?

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8" %>

删除scriptlet的决定是避免由多个开发人员编写的项目中的scriptlet混乱。

如果在不使用scriptlet的情况下无法更改导入,那么我将如何禁用它以供<%@ taglib<%@ page以外的任何使用

试图改变

代码语言:javascript
复制
<%@ taglib prefix="s" uri="/struts-tags" %>

代码语言:javascript
复制
<jsp:directive.tagLib prefix="s" uri="struts-tags" />

但是Servlet抛出了一个错误:

org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/portal].[jsp] Servlet.service() for servlet jsp抛出异常: org.apache.jasper.JasperException: /index.jsp(2,18)

我还有别的事要做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-08 02:08:55

JSP2.2规范

JSP句法的EBNF语法

代码语言:javascript
复制
ScriptlessBody ::= ( ( ‘<%--’ JSPCommentBody )
                   | ( ‘<%@’ DirectiveBody )
                   | ( ‘<jsp:directive.’ XMLDirectiveBody )
                   | ( ‘<%!’ <TRANSLATION_ERROR> )
                   | ( ‘<jsp:declaration’ <TRANSLATION_ERROR> )
                   | ( ‘<%=’ <TRANSLATION_ERROR> )
                   | ( ‘<jsp:expression’ <TRANSLATION_ERROR> )
                   | ( ‘<%’ <TRANSLATION_ERROR> )
                   | ( ‘<jsp:scriptlet’ <TRANSLATION_ERROR> )
                   | ( ‘${‘ ELExpressionBody )
                   | ( ‘#{‘ ELExpressionBody )
                   | ( ‘<jsp:text’ XMLTemplateText )
                   | ( ‘<jsp:’ StandardAction )
                   ( ( ‘</’ ExtraClosingTag )
                   | ( ‘<‘ CustomAction CustomActionBody )
                   | TemplateText
                   )*

所以,当scripting-invalid=true

非法

代码语言:javascript
复制
<%
<%!
<%=
<jsp:scriptlet
<jsp:declaration
<jsp:expression

Legal

代码语言:javascript
复制
<%@
<jsp:directive.
<jsp:

以下是合法的:

代码语言:javascript
复制
 <%@ taglib prefix="utils" uri="/tags-utils" %>

只要"app context uri“+”/tags utils“(taglib的上下文-相对路径)映射到"taglib绝对uri”。

或者,您可以尝试::

代码语言:javascript
复制
 <%@ taglib prefix="utils" uri="http://www.mycorp/utiltags" %>  // use your absolute taglib URI

代码语言:javascript
复制
 <%@ taglib prefix="utils" uri="uri_path_relative_to_jsp_uri" %>  // no leading "/"

代码语言:javascript
复制
 <%@ taglib prefix="utils" tagdir="/WEB-INF/tags" %> // include subdir if approp

以下是发明的。没有定义jsp:directive.tagLib 标记。不要用.

代码语言:javascript
复制
 <jsp:directive.tagLib prefix="s" uri="struts-tags" />

而不是:

代码语言:javascript
复制
 <%@ page language="java" contentType="text/html; charset=UTF-8" %>

Try:

代码语言:javascript
复制
 <%@ page contentType="text/html; charset=UTF-8" %>  // language is for scriptlets
票数 2
EN

Stack Overflow用户

发布于 2012-12-08 18:49:25

<%@taglib<%@page是指令,而不是脚本。

Scriptlet将拥有<%

或者你也可以这样写

代码语言:javascript
复制
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13780661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档