JSP标签+ scriptlet。如何启用脚本?

我有一个使用标签模板的页面。我的web.xml非常基础。

我只想在页面中运行一些代码。

不,我对标签或其他替代品不感兴趣。我想用坏习惯的脚本哈哈。

到目前为止,我收到此“ HTTP ERROR 500”错误:

Scripting elements ( %!, jsp:declaration, %=, jsp:expression, %, jsp:scriptlet ) are disallowed here.

虽然我的文件看起来像:

/WEB-INF/web.xml

<?xml version="1.0" encoding="utf-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5">

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

/WEB-INF/tags/wrapper.tag

<%@tag description="Simple Wrapper Tag" pageEncoding="UTF-8"%>

<%@ attribute name="title" required="true" type="java.lang.String"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>

<title>${title}</title>

</head>

<body>

<jsp:doBody />

</body>

</html>

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="t" tagdir="/WEB-INF/tags"%>

<t:wrapper>

<jsp:attribute name="title">My nice title</jsp:attribute>

<jsp:body>

<h1><%="some code generated text"%></h1>

</jsp:body>

</t:wrapper>

我试图修改web.xml以显式启用它,如下所示(不起作用):

<jsp-config>

<jsp-property-group>

<url-pattern>*.jsp</url-pattern>

<scripting-invalid>false</scripting-invalid>

</jsp-property-group>

<jsp-property-group>

<url-pattern>*.tag</url-pattern>

<scripting-invalid>false</scripting-invalid>

</jsp-property-group>

</jsp-config>

那么,如何在标记的JSP中使用纯scriptlet?

使用我的模板的页面内(上面的“包装”), 应如下所示:

<%@page import="java.util.Calendar"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="t" tagdir="/WEB-INF/tags"%>

<t:wrapper>

<jsp:attribute name="title">My nice title</jsp:attribute>

<%

final int day_of_week = Calendar.getInstance().get(

Calendar.DAY_OF_WEEK);

if (day_of_week == Calendar.SATURDAY)

{

%>

<jsp:body>

<h1>Have a nice Saturday (<%=Integer.toString(day_of_week)%>)!</h1>

</jsp:body>

<%

}

else

{

%>

<jsp:body>

<h1>Have a nice rest-of-the-week (<%=Integer.toString(day_of_week)%>)!</h1>

</jsp:body>

<%

}

%>

</t:wrapper>

看到?’‘标记之间和内部的小脚本。这正是我要实现的目标。

回答:

在这种情况下,容器不关心scripting-

invalidweb.xml中的值,因为它正在查看其标本jsp:body内容值为的标签元数据scriptless。因此,当您看到:

Scripting elements ( %!, jsp:declaration, %=, jsp:expression, %, jsp:scriptlet ) are disallowed here.

容器抱怨jsp:body的内容必须是无脚本的。如果要在主体中呈现scriptlet内容,则可以使用scriptlet将其设置为jsp:body标记之外的page属性,然后使用EL对其内部进行渲染,如下所示:

<% request.setAttribute("stuff", object); %>

<jsp:body>

${stuff}

</jsp:body>

以上是 JSP标签+ scriptlet。如何启用脚本? 的全部内容, 来源链接: utcz.com/qa/415860.html

回到顶部