Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > jsp+jsf+servlet


Автор: Tigra 1.2.2008, 10:27
Пытаюсь создать свой первый проект и возник вот такой вопрос:
Есть у меня jsp страница с формой, которая использует jsf. Хотелось бы, чтобы переход по кнопке <h:commandButton> осуществлялся не на другую jsp страницу, а на Servlet. 
Не могу разобраться, как это можно осуществить.  В Navigation Rule можно осуществить переход только с jsp на jsp (( И на Servlet моя страница никак не отправляется.

Автор: v2v 1.2.2008, 12:17
сделай в контроллере форвард на сервлет.

Автор: Tigra 1.2.2008, 12:29
Простите за глупый вопрос, а можно поподробнее?
Где и что написать?

Автор: v2v 1.2.2008, 12:57
ну например , jsp страничка получатель может быть такой:
<% response.sendRedirect("servlet2"); %>

Добавлено через 4 минуты и 10 секунд
придумал вариант по хитрее : в web.xml ты делаешь мапинг для сервлета: по какому урл-у к нему получать доступ: сделай ему: serlvlet.jsp . я не пробовал, но предполагаю, что так работать будет).

Автор: Greg 1.2.2008, 13:02
Использование сервлета в рамках модели JSF для инкапсуляции части контроллер в большинстве случаев не целесообразно. Для этого в JSF есть понятия bindings & backing beans. Вот пример использования binding:
Код

<h:commandButton action="#{backingBean.download}"/>

backingBean должен быть описан в faces-config.xml:
Код

<faces-config>
  <managed-bean>
    <managed-bean-name>backingBean</managed-bean-name>
    <managed-bean-class>app.BackingBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>    
  </managed-bean>
  ...
  <navigation-rule>
    <from-view-id>/downloadPage.jsf</from-view-id>
    <navigation-case>
      <from-outcome>success</from-outcome>
      <to-view-id>/successDownload.jsf</to-view-id>
    </navigation-case>
    <navigation-case>
      <from-outcome>fail</from-outcome>
      <to-view-id>/failDownload.jsf</to-view-id>
    </navigation-case>
  </navigation-rule>
</faces-config>

backing bean - это обычный Java Bean компонент, который должен определять метод:
Код

public String download() {
  // executing business logic
  if (successCondition) {
    return "success"
  } else {
    return "fail"
  }
}

Автор: Tigra 1.2.2008, 14:26
Спасибо огромное  smile 
Использую
Цитата

 вариант по хитрее : в web.xml ты делаешь мапинг для сервлета: по какому урл-у к нему получать доступ: сделай ему: serlvlet.jsp . я не пробовал, но предполагаю, что так работать будет). 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)