JSP c:在代码范围内导入参数



我觉得这是一个微不足道的问题,但由于某种原因,我无法解决它。我想将c:import参数作为JSP的"代码"中的变量访问,而不是作为EL表达式访问

来自以下JSP:

<%@ page pageEncoding="UTF-8"%>
<%@ page language="java"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
                <c:import url="child.jsp">
                    <c:param name="foo" value="bar"/>
                </c:import>

到导入的JSP:

<%@ page pageEncoding="UTF-8"%>
<%@ page language="java"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
if( null == request.getAttribute("foo")  )
   throw new Exception();
%>

总是抛出异常,换句话说,这不是访问参数的正确方式。

请告诉我应该怎么做?

要显示参数的值,请尝试使用request.getParameter(..):

  if( null == request.getParameter("foo")) 
Abdelhak的另一个答案是正确的,但我想补充一些解释。在您的第一个jsp中:
<c:import url="child.jsp">
   <c:param name="foo" value="bar"/>
</c:import>  

与相同

<c:import url="child.jsp?foo=bar"/>  

foo在查询字符串中。

在您的child.jsp:
中您应该获取参数而不是属性,因为foo根本不存储在请求范围中
请改用此选项:
request.getParameter("foo");

最新更新