我尝试运行以下行。
<%=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")%>
。问候,
约翰
最佳答案
关于此有一个FAQ on JavaRanch。
它指出以下内容;
如何使用EL访问servlet初始化参数?
您不能使用以下语法访问servlet初始化参数:
${pageContext.servletConfig.initParameter.name}
您无法使用此技术获取Servlet初始化参数。的
getInitParameter(java.lang.String name)在这种情况下不适合,
因为它需要一些参数。
根据JavaBean规范,该属性具有getter和setter
形式的方法
public type1 getXXX()
-不带参数。
public void setXXX(type1)
现在,将pageContext视为bean对象。的
PageContext类具有诸如getServletConfig(),getRequest(),
getSession()等。您可以访问这些内容,例如pageContext.page,
EL中的pageContext.request等。
ServletContext对象有几种方法,例如getMajorVersion(),
没有参数的getMinorVersion()。所以我们可以使用这些方法
将其视为sevletContext bean的属性
pageContext.servletContext.majorVersion和
pageContext.servletContext.minorVersion。
如果要使用EL访问Servlet初始化参数,则可以
更好地为servlet创建一个初始化参数的Map,
将其作为范围变量放置在请求中-假设
initParameters。这样便可以通过名称获取任何参数
与$ {requestScope.initParameters.name}。
注意:
我们可以使用${initParam.name}
访问上下文初始化参数
关于jSTL - 在scriptlet和EL中使用ServletContext和ServletConfig,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6750645/