JSF - pobieranie atrybutu żądania

0

Przed tym, gdy zacząłem używać JSF, JSTL umożliwiało mi następującą funkcję:

<c:if test="${not (empty request.error)}">
    Error: ${request.getAttribute("error")}
</c:if>

Pozwalała ona wyświetlić zawartość atrybutu request, jeżeli istniał.

Po przeniesieniu layoutu w technologię JSF taki sam kod daje mi błąd:
/login.xhtml @24,51 test="${not (empty request.error)}" /login.xhtml @24,51 test="${not (empty request.error)}": Property 'error' not found on type org.apache.catalina.connector.RequestFacade
I tu go rozumiem - nie znajduje parametru error w beansie RequestFacade.
To jest chyba pierwsze nieporozumienie, gdyż mi chodzi o pobranie atrybutu z requestu.

Kolejny sposób, w jaki chciałem to rozwiązać było zastosowanie takiej funkcji:
<h:outputText value="#{param['error']}" />
param ma być tutaj grupą wszystkich wartości: atrybutów, parametrów itd. - jednak w żaden sposób nie zwraca niczego.

Treść atrybutu error jest ustawiana z poziomu servletu. Na 100% istnieje w przypadku popełnienia błędu w formularzu.

Cały kod login.xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
	            template="./template.xhtml"
	            xmlns:c="http://java.sun.com/jsp/jstl/core">

	<ui:define name="userBar">
	    <form method="POST" action="Login">
	        <table>
	            <tr>
	                <td>Login</td>
	                <td><input type="text" name="login" /></td>
	            </tr>
	            <tr>
	                <td>Password</td>
	                <td><input type="password" name="password" /></td>
	            </tr>
	            <tr>
	                <td colspan="2"><input type="submit" value="Login" /></td>
	            </tr>
	        </table>            
	    </form>

	    <c:if test="${not (empty request.error)}">
	        Error: ${request.getAttribute("error")}
	    </c:if>

		<h:outputText value="#{param['error']}" />
	</ui:define>

	<ui:define name="content">
	    content
	</ui:define>
</ui:composition>

Zna ktoś jakiś sposób na pobranie tego atrybutu i wyświetlenie go? Dobrze by było, abym mógł przy wyświetlaniu uwzględnić swój dodatkowy HTML. Przetrzymuje on wartości w stylu "Invalid username or password".

0

Zna ktoś jakiś sposób na pobranie tego atrybutu i wyświetlenie go? Dobrze by było, abym mógł przy wyświetlaniu uwzględnić swój dodatkowy HTML. Przetrzymuje on wartości w stylu "Invalid username or password".

Zdecydowanie napisz sobie do tego bean'a pomocniczego. Dostęp do request'u zapewnisz za pomocą context'u:
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

i w implementacji widoku dostaniesz dostęp do dowolnej metody bean'a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1