为什么jsp:在eclipse中包含get参数标记为错误的页面?

时间:2012-09-24 09:35:00

标签: eclipse jsp jstl

我的同事正在使用netbeans,以下验证正常:

<jsp:include page="/somepage.jsp?parameter=value"/>

然而在日食中我得到了

  

在所选路径中找不到碎片

这与添加参数有关,因为以下验证正常:

<jsp:include page="/somepage.jsp"/>

有没有办法解决这个问题?

4 个答案:

答案 0 :(得分:4)

您应该使用<jsp:param>来传递请求参数。

<jsp:include page="/somepage.jsp">
  <jsp:param name="parameter1" value="value1"/>
</jsp:include>

答案 1 :(得分:3)

将参数传递给另一个JSP页面 include操作(请参阅在JSP页面中包含文件)执行包含的JSP页面,并将生成的输出附加到其自己的输出流上。从URL查询字符串解析的请求参数不仅可用于主JSP页面,还可用于所有包含的JSP页面。在调用JSP页面时,可以临时覆盖请求参数或临时引入新的请求参数。这是通过使用jsp:param操作完成的。

在此示例中,param1在查询字符串中指定,并自动提供给callee 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&param2=b
输出将是:

被叫方:

param1:a

param2:value2

param3:value3

呼叫者:

param1:a

param2:b

param3:null

访问http://www.exampledepot.com/egs/javax.servlet.jsp/caller.jsp.html

答案 2 :(得分:0)

Eclipse认为所包含文件的名称是“somepage.jsp?parameter = value”,当然不存在。它在NetBeans中验证很好,因为它用于解析/验证路径的任何机制都比Eclipse更聪明。

Eclipse中的错误是假阳性(假设“somepage.jsp”确实存在于预期位置),因为JSP编译器将正确解释路径并将“parameter = value”作为参数包含在包含的JSP中,可通过以下方式访问:

${param.parameter}${param['parameter']}

答案 3 :(得分:0)

如果要使用url中的参数,请在eclipse中禁用“ JSP语法验证器”。

项目右键单击->属性->验证

enter image description here

确保启用项目特定的设置,即上面的复选框。否则,它将采用默认设置。