我试图运行以下几行。
<%=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")}
和null值
<%=config.getInitParameter("admincontact")%>
。
此致 约翰
答案 0 :(得分:6)
有FAQ on JavaRanch这个。
它陈述如下;
如何使用EL访问servlet init参数?
你不能使用以下语法来访问servlet init参数:
${pageContext.servletConfig.initParameter.name}
使用此技术无法获取Servlet init参数。该 getInitParameter(java.lang.String name)不适合这种情况, 因为它需要一些论据。
根据JavaBean规范,该属性有getter&amp;二传手
形式的方法
public type1 getXXX()
- 没有任何论据。
public void setXXX(type1)
现在将pageContext视为bean对象。该 PageContext类有像getServletConfig(),getRequest()这样的方法, getSession()等你可以访问这些像pageContext.page, EL中的pageContext.request等。
ServletContext对象有几个方法,比如getMajorVersion(), getMinorVersion()没有args。所以我们可以访问这些方法 将它作为sevletContext bean的属性处理为 pageContext.servletContext.majorVersion和 pageContext.servletContext.minorVersion。
如果你想使用EL访问Servlet init参数,那么它就是 最好为servlet创建一个init参数的Map 将它作为范围变量放在请求中 - 让我们说 initParameters。然后,您就可以按名称获取任何参数 使用$ {requestScope.initParameters.name}。
注意强>:
我们可以使用
访问上下文初始化参数${initParam.name}
答案 1 :(得分:0)
除了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>