Теги Spring не работают в файлах JSF XHTML - PullRequest
2 голосов
/ 15 июня 2011

Я новичок в JSF и Spring.Я пытаюсь использовать Spring Security с JSF.Я разработал страницу XHTML, как показано ниже:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:spring="http://www.springframework.org/tags"
    xmlns:form="http://www.springframework.org/tags/form">
<head>
    <title>JSF Test</title>
</head>
<body>
    <f:view>
    <p>This page should be authenticated!</p>
    <a href="<spring:url value="/j_spring_security_logout" htmlEscape="true" />">Logout</a>
    <div>Test: <spring:url value="/j_spring_security_logout" htmlEscape="true" /></div>
  </f:view>
</body>
</html>

Я пытаюсь добавить ссылку выхода из системы, используя тег spring:url.Однако, во-первых, это дает ошибку, что атрибут href не может содержать <.Чтобы устранить эту проблему, я удалил тег <code>a и использовал div, чтобы проверить, могу ли я получить нужное значение из тега spring:url.Я обнаружил, что тег spring:url не анализируется и отображается так же, как и в источнике сгенерированной страницы.

Вместо использования страницы XHTML, если я использую страницу JSP с taglibs вместо xmlns, все работает нормально,Я не могу понять, почему он не работает с файлами XHTML.

Мой Faces Servlet сопоставлен с <em>.jsf, а springSecurityFilterChain сопоставлен с /</em>* (без пробела между ними).Я попытался сопоставить springSecurityFilterChain с *.jsf, и это тоже не помогает.

1 Ответ

1 голос
/ 15 июня 2011

Facelets - это технология представления на основе XML.Вложение тегов в качестве атрибута другого тега является недопустимым XML.Все, что эффективно делает <spring:url>, - это предварительный путь к контексту, вы также можете сделать это самостоятельно:

<a href="#{request.contextPath}/j_spring_security_logout">Logout</a>

Экранирование HTML не имеет значения, поскольку вы не передаете через него никаких параметров.

...