HTML не проходит проверку - PullRequest
       8

HTML не проходит проверку

1 голос
/ 01 января 2012

Следующая строка не проходит проверку в моем приложении. Ошибка в 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 ]

1 голос
/ 01 января 2012

Не используйте скриптлеты в JSP.Используйте JSP EL:

<a href="${urlPrefix}/content/edit">Add Content</a>
0 голосов
/ 02 января 2012

Я только что провел простой тест, и следующая строка не имеет синтаксической ошибки и запускается без исключения, независимо от того, установлен атрибут 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. Вы уверены, что смотрите правильный URL / среду?
0 голосов
/ 01 января 2012

Попробуйте:

<% 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-атак , как Асаф указал в своем комментарии:

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

может добиться цели, если вы добавите

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

в верхней частиваш JSP.

0 голосов
/ 01 января 2012
<a href="<%=request.getAttribute('urlPrefix')%>/content/edit">Add Content</a>

Используйте одинарные кавычки с urlPrefix. Это должно работать.

...