我尝试运行以下代码行。
<%=application.getInitParameter("tagline")%>
<br />
<%=config.getInitParameter("admincontact")%>
${initParam.tagline}
<br />
${pageContext.servletConfig.initParameter("admincontact")}我的web.xml是
<servlet>
<jsp-file>/index.jsp</jsp-file>
<init-param>
<param-name>admincontact</param-name>
<param-value>8939302763</param-value>
</init-param>
</servlet>
<context-param>
<param-name>tagline</param-name>
<param-value>Each one Plant one</param-value>我在${pageContext.servletConfig.initParameter("admincontact")}得到了一个异常,<%=config.getInitParameter("admincontact")%>得到了一个空值。
向您致敬,约翰
发布于 2011-07-20 11:35:54
有一个关于这方面的FAQ on JavaRanch。
它陈述了以下内容;
如何使用EL?访问servlet初始化参数
您无法使用以下语法访问servlet初始化参数:
${pageContext.servletConfig.initParameter.name}
您不能使用此技术获取Servlet初始化参数。getInitParameter(java.lang.String名称)不适合这种情况,因为它需要一些参数。
根据JavaBean规范,该属性具有如下形式的getter和setter方法
public type1 getXXX() --不带参数。
public void setXXX(type1)
现在考虑将pageContext作为bean对象。PageContext类有getServletConfig()、getRequest()、getSession()等方法,你可以在EL中访问pageContext.page、pageContext.request等。
ServletContext对象有几个不带参数的方法,比如getMajorVersion(),getMinorVersion()。因此,我们可以访问这些方法,将其作为sevletContext bean、pageContext.servletContext.majorVersion和pageContext.servletContext.minorVersion的属性。
如果您希望使用EL访问Servlet初始化参数,那么最好为servlet创建一个初始化参数映射,并将其作为限定了作用域的变量放在请求中--比方说initParameters。然后,您将能够使用${requestScope.initParameters.name}按名称获取任何参数。
备注:
我们可以使用${initParam.name}访问上下文初始化参数
发布于 2016-02-16 23:17:22
除了Moose先生的回答之外,我还发现了这个使用EL定义自定义标记的解决方案。它在我的案例中起作用了。这里是link
基本上,您必须像这样创建一个Java类:
package example.customTags;
import javax.servlet.jsp.JspPage;
public class MyFunctions {
public static String getJspInitParameter(JspPage page, String param){
return page.getServletConfig().getInitParameter(param);
}
}创建一个tld文件,如下所示(我的文件路径是WEB-INF/myTags/customTags.tld):
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Functions</short-name>
<function>
<name>getJspInitParameter</name>
<function-class>example.customTags.MyFunctions</function-class>
<function-signature>
java.lang.String getJspInitParameter(javax.servlet.jsp.JspPage, java.lang.String)
</function-signature>
</function>
</taglib>并在JSP中使用它,如下所示:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="my" uri="../WEB-INF/myTags/customTags.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Example</title>
</head>
<body>
<c:out value="${my:getJspInitParameter(pageContext.page, 'admincontact')}"/>
</body>
</html>https://stackoverflow.com/questions/6750645
复制相似问题