HTML未通过验证

时间:2012-01-01 15:13:53

标签: java java-ee-6

以下行未在我的申请中通过验证。 Netbeans的错误是......

Bad value " /content/edit" for attribute href on element "a": WHITESPACE in PATH

    <a href="<%=request.getAttribute("urlPrefix")%>/content/edit">Add Content</a>

运行时错误是:

org.apache.jasper.JasperException: /base.jsp(9,25) PWC6213: quote symbol expected

我正在传递此值的属性。我传递值时为什么会出现此错误?

4 个答案:

答案 0 :(得分:1)

不要在JSP中使用scriptlet。使用JSP EL:

<a href="${urlPrefix}/content/edit">Add Content</a>

答案 1 :(得分:0)

<a href="<%=request.getAttribute('urlPrefix')%>/content/edit">Add Content</a>

使用urlPrefix的单引号。它应该工作。

答案 2 :(得分:0)

试试这个:

<% String urlPrefix = (String)request.getAttribute("urlPrefix"); %>
<a href="<%=urlPrefix%>/content/edit">Add Content</a>

或更好:

<%
String urlPrefix = (String)request.getAttribute("urlPrefix");
String url = urlPrefix + "/content/edit";
%>
<a href="<%=url%>">Add Content</a>

甚至更好地使用EL:

<a href="${urlPrefix}/content/edit">Add Content</a>

值得一提的是XSS attacksAsaph的保护作为{{3}}在他的评论中指出:

<a href="${fn:escapeXml(urlPrefix)}/content/edit">Add Content</a>
如果包含

可能会成功

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

位于JSP的顶部。

答案 3 :(得分:0)

我刚刚完成了一个简单的测试,并且以下行没有语​​法错误,并且无论是否设置urlPrefix属性都会运行而不会抛出异常:

<a href="<%=request.getAttribute("urlPrefix")%>/content/edit">Add Content</a>

根本没有语法错误。如果没有设置urlPrefix属性,则生成的html为:

<a href="null/content/edit">Add Content</a>

如果urlPrefix等于http://example.com,则生成的html为:

<a href="http://example.com/content/edit">Add Content</a>

这是一个快速的小型独立test.jsp文件,用于演示:

<% request.setAttribute("urlPrefix", "http://example.com"); %>
<a href="<%=request.getAttribute("urlPrefix")%>/content/edit">Add Content</a>

您可以删除第一行以测试null案例。

因此,我们已经证明您发布的指定违规行的行实际上并不存在问题。一些可能性:

  1. 您确定要查看正确的线路吗?
  2. 您确定要查看正确的文件吗?
  3. 您确定已部署了应用程序吗?
  4. 您确定要查看正确的网址/环境吗?