@parkito

Как подружить jsp и jsf?

Здравствуйте. Помогите, пожалуйста, решить проблему.

Написал приложение на EJB. Переменные на страницу выводил с помощью jsf
index.xhtml:
<?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:h="http://java.sun.com/jsf/html">
<h:head>
    <title>JSF 2.0</title>
</h:head>
<h:body>
    <h3>Enter tariff title</h3>
    <h:form>
        <h:inputText value="#{beanController.tariff}"></h:inputText>
        <br/>
        <br/>
        <h:commandButton value="Get report" action="#{beanController.getInfo}"></h:commandButton>
    </h:form>
</h:body>
</html>


Однако мне нужно переоформить эту страницу. Пример оформления есть в jsp. И тут начинаются проблемы. Если переименовать xhtml в jsp перестает работать jsf, если наоборот, то jsp.
Как правильно гужно сделть для того, чтобы в jsp-файлах заработали теги из jsf?
  • Вопрос задан
  • 488 просмотров
Пригласить эксперта
Ответы на вопрос 2
zolt85
@zolt85
Программист
По-моему JSP и JSF это 2 разные версии одного и того же. Т.е. Вам нужно использовать что-то одно. Если берем JSP то нужно использовать JSTL. Меняем знак '#' на '$' и живем дальше счастливо.
Ответ написан
Комментировать
@sirs
Сделать можно, но как выше заметил Евгений не имеет практического смысла. Единственный кейс, который могу придумать - постепенная миграция проекта с jsp на jsf или наоборот.

Попробуйте сконфигурировать DEFAULT_SUFFIX и FACELETS_VIEW_MAPPINGS, добавив в web.xml
<web-app>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jsp</param-value>
    </context-param>

    <!-- Facelets pages will use the .xhtml extension -->
    <context-param>
        <param-name>facelets.VIEW_MAPPINGS</param-name>
        <param-value>*.xhtml</param-value>
    </context-param>     

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>

    <!-- Use prefix mapping for Facelets pages, e.g. http://localhost:8080/webapp/faces/mypage.xhtml -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
</web-app>


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

Войдите, чтобы написать ответ

Похожие вопросы