1
resposta

JSF EL out of attribute: #{...} não é permitido no texto do template

Galera, tô tentando fazer um form de login mas acho que tô usando coisa errada.

No meu JSP, se eu coloco #{Variável ou função aqui}, o Intellij critica com a mensagem JSF EL out of attribute. No navegador, dá #{...} não é permitido no texto do template. Se eu coloco ${Variável ou função aqui}, ele abre, mas aí a função é executada automaticamente, retornando nullPointerException. O que será que tô fazendo errado? Tô usando alguma library errada?

login.jsp:

<jsp:useBean id="LoginBean" scope="request" type="br.com.scheper.mateus.controller.LoginBean"/>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Entrar</title>
    </h:head>
    <h:body>
        <c:import url="navbar.jsp"/>
        <p:messages id="messages"/>

        <p:inputText id="username-input" value="#{LoginBean.user.email}"/>
        <p:inputText id="password-input" value="#{LoginBean.user.password}"/>
       <p:commandButton value="ENTRAR" action="#{LoginBean.login}" ajax="false"/>

        <c:import url="footer.jsp"/>
    </h:body>
</html>
1 resposta

Você receberá esse erro ao usar o JSP como tecnologia de exibição e usar o {...} no texto do template fora de uma tag JSF.

O sustenido (#) deve ser utilizado somente dentro de tags JSF, caso contrário, utilize o $

No trecho de código que você enviou não reparei em nenhum problema (apesar da mensagem de erro aparentar ser algo relacionado a isso).