Страница интеграции Web Flow + JSF по умолчанию

Я использую Web Flow и JSF, так что они действительно хорошо работают. Но я пытаюсь найти альтернативный способ установки страницы по умолчанию, отличный от перенаправления на index.html.

Основная проблема в том, что скрипты веб-аналитики не работают должным образом. Я не могу отследить источник пользователя на главной странице.

Приложение работает на Tomcat 8

Web.xml

<welcome-file-list>
  <welcome-file>index.html</welcome-file>
</welcome-file-list>

index.html

<html>
    <head>
        <meta http-equiv="Refresh" content="0; URL=web/home-page">
    </head>
</html>

ОБНОВЛЕНИЕ:

Я заменяю index.html на index.jsp и устанавливаю статус ответа 301. По крайней мере, он работает для Google Analytics, поэтому я проверю его для других инструментов аналитики. Но меня это решение все равно не удовлетворило.

Web.xml

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

index.jsp

<%
response.setStatus(301);
String path=(String)request.getAttribute("javax.servlet.forward.request_uri");
if(path==null){
    path="web/home-page";
}
response.setHeader( "Location", path);
response.setHeader( "Connection", "close" );
%>

person erdoganonur    schedule 07.04.2015    source источник
comment
Я не знаком с Spring Web Flow, но почему вы не можете просто указать нужный файл в welcome-file?   -  person DavidS    schedule 08.04.2015
comment
Спасибо за ваше предложение, но его нельзя использовать как JSF, выражение и другие функции не работают. Он не отображается просто HTML.   -  person erdoganonur    schedule 08.04.2015
comment
@erdoganonur Вы используете Spring Security Project?   -  person Selwyn    schedule 08.04.2015
comment
Да, я использую безопасность sprin 3.2.4 и веб-поток 2.4.0   -  person erdoganonur    schedule 08.04.2015
comment
@erdoganonur Да, ваша работа в области просмотра не знает, как разрешить файл приветствия. Я собирался предложить использовать Spring Security Project для обработки маршрутизации запросов, чтобы заменить функцию welcome-файла. Таким образом, любое перенаправление на любое представление, выполняемое Spring Security, будет подхвачено вашей структурой представления в этом случае JSF. В этом отношении проект Spring Security достаточно модульный.   -  person Selwyn    schedule 08.04.2015


Ответы (1)


Я бы использовал проект безопасности Spring вместо файлов приветствия, потому что JSF (или любая структура представления) не знает, как разрешить представление в файле приветствия, поэтому ваша логика не выполняется.

Возможное решение - если вы используете проект Spring Security. Добавьте следующее в свою конфигурацию безопасности

<security:http auto-config="true" use-expressions="true">
<!--- config omitted for brevity -->
<security:session-management invalid-session-url="/index.jsp"/>
</security:http>

Опять же, это всего лишь образец. Вы также можете использовать другие средства для определения правил. Он довольно модульный

<security:intercept-url pattern="/**" ....

Более того, вам нужно будет определить бесклассовый контроллер со следующим определением: (при условии, что вы также используете Spring MVC с Webflow)

<mvc:view-controller path="/index.jsp" />

Я думаю, что менее загадочно определять правила перехвата, пересылки, маршрутизации и т. Д. В конфигурации Spring Security, чтобы было ясно, что любые такие правила хранятся в одном месте.

Примечание: вы можете сохранить текущую настройку и использовать это определение spring <mvc:view-controller path="/index.jsp" /> только для запуска JSF.

person Selwyn    schedule 08.04.2015