我的同事正在使用 netbeans,以下验证很好:
<jsp:include page="/somepage.jsp?parameter=value"/>
然而在日食中我得到
在所选路径中未找到片段
这与添加参数有关,因为以下验证很好:
<jsp:include page="/somepage.jsp"/>
有没有办法来解决这个问题?
您应该使用<jsp:param>
传递请求参数。
<jsp:include page="/somepage.jsp">
<jsp:param name="parameter1" value="value1"/>
</jsp:include>
将参数传递到另一个 JSP 页面 包含操作(请参阅在 JSP 页面中包含文件)执行包含的 JSP 页面并将生成的输出附加到它自己的输出流中。从 URL 的查询字符串解析的请求参数不仅可用于主 JSP 页面,还可用于所有包含的 JSP 页面。在调用 JSP 页面时,可以临时覆盖请求参数或临时引入新的请求参数。这是通过使用 jsp:param 操作完成的。
在此示例中,param1 在查询字符串中指定,并自动提供给被调用者 JSP 页面。param2 也在查询字符串中指定,但被调用者覆盖。请注意,调用后 param2 恢复为原始值。param3 是调用者创建的新请求参数。请注意,param3 仅对被调用者可用,当被调用者返回时,param3 不再存在。这是调用者 JSP 页面:
<html>
<head></head>
<body>
<jsp:include page="callee.jsp" />
<jsp:param name="param2" value="value2" />
<jsp:param name="param3" value="value3" />
</jsp:include>
Caller:
param1: <%= request.getParameter("param1") %>
param2: <%= request.getParameter("param2") %>
param3: <%= request.getParameter("param3") %>
</body>
</html>
这是被调用的 JSP 页面:
被叫方:
param1: <%= request.getParameter("param1") %>
param2: <%= request.getParameter("param2") %>
param3: <%= request.getParameter("param3") %>
如果使用 URL 调用示例:
http://hostname.com?param1=a¶m2=b
输出将是:
被叫方:
参数1:一个
参数2:值2
参数 3:值 3
呼叫者:
参数1:一个
参数2:b
参数3:空
访问http://www.exampledepot.com/egs/javax.servlet.jsp/caller.jsp.html
Eclipse 认为被包含的文件的名称是“somepage.jsp?parameter=value”,这当然不存在。它在 NetBeans 中验证良好,因为它用于解析/验证路径的任何机制都比 Eclipse 更智能。
Eclipse 中的错误是误报(假设“somepage.jsp”确实存在于预期位置),因为 JSP 编译器将正确解释路径并将“parameter=value”作为参数包含在包含的 JSP 中,可通过以下方式访问:
${param.parameter}
或者${param['parameter']}