Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.05.2016, 12:53   #1
alextrof94
Участник клуба
 
Регистрация: 16.03.2013
Адрес: Казань
Сообщений: 599
Репутация: 63
По умолчанию Аналог exit из PHP для JSF, чтобы дальнейший код в шаблоне не выполнялся.

Столкнулся с проблемой, когда после неудачной авторизации в браузер должен прийти респонз с редиректом, но из-за шаблонности дальнейший код в контенте выполняется. Ставить в каждую функцию, которая может быть вызвана после функции инициализации "if null return;" не нахожу оптимальным (хотя проверять на нулл используемое - правильно вроде бы).

Код шаблона:
Код HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">

    <h:head>
		<f:metadata>
<!-- Вот событие, которое должно быть вызвано на каждой странице-->
			<f:event listener="#{userBean.checkAuthorization}" type="preRenderView" />
			<ui:insert name="roleNeed" >
		    	<f:attribute name="roleNeed" value="user" />
		    </ui:insert>
		</f:metadata>
    </h:head>
    
    <h:body>		
	    <div id="header">
			<ui:insert name="header" >
				<ui:include src="/template/commonHeader.xhtml" />
			</ui:insert>
	    </div>
	    
	    <div id="content">
		  	<ui:insert name="content" >
		 		<ui:include src="/template/commonContent.xhtml" />
		   	</ui:insert>
	    </div>
		    
	    <div id="footer">
	    	<ui:insert name="footer" >
	    		<ui:include src="/template/commonFooter.xhtml" />
	    	</ui:insert>
   	    </div>

    </h:body>
</html>
Код страницы:
Код HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
	
    <h:body>

	<ui:composition template="/template/main.xhtml">
		<ui:define name="roleNeed" >
			<f:attribute name="roleNeed" value="admin" />
		</ui:define>
    		<ui:define name="content">
<!-- Этот код вызываться не должен, если юзер не вошел в аккаунт, однако в логах пишется, что он вызван -->
			<h:outputLabel value="#{administrationUnit.status}" style="font-weight:bold; display: block; width:185px;" />
		</ui:define>

    	</ui:composition>

    </h:body>

</html>
В userBean.checkAuthorization вызываю этот метод:
Код:

	private void redirectToAuthorization() {
		System.err.println("userBean.redirectToAuthorization");
		try {
			FacesContext facesContext = FacesContext.getCurrentInstance();
			ExternalContext ec = facesContext.getExternalContext();
			
			HttpServletRequest req = (HttpServletRequest) ec.getRequest();
			String url = req.getRequestURL().toString();
			
			HttpServletResponse response = (HttpServletResponse) ec.getResponse();
			response.sendRedirect("http://"+ Helper.HOST_PHP +"/login.php?last_page=" + url);
		        System.err.println("userBean.redirected"); // показывается в логах эта строка, т.е. строкой выше нас "редиректит"
		}
		catch (Exception ex){
			ex.printStackTrace();
		}
	}

Может я событие userBean.checkAuthorization не туда втыкаю?
__________________
alextrof94$gmail.com

Последний раз редактировалось alextrof94; 12.05.2016 в 13:05.
alextrof94 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код в шаблоне Trimbl Microsoft Office Excel 1 16.04.2013 04:40
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 20:23
чтобы при переходе по записям DBGrid\DBGrigEh не выполнялся Post dalien БД в Delphi 2 31.07.2009 09:57
Как сделать чтобы макрос выполнялся сам каждые 10 минут? Град SQL, базы данных 0 26.05.2008 16:12




04:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru