2012-05-03 6 views
0

Здравствуйте, я создаю сайт с использованием JSF 2.0.JSF 2.0 Навигация после commandButton

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

До сих пор я использовал навигацию по JSF 2.0, но из того, что я прочитал, невозможно выполнить два действия, поэтому вы должны использовать файл faces-config.xml.

Я пробовал создать один и сделать правило навигации, но я не могу заставить его работать. Думайте, что это может быть проблема, объявляющая об этом в моем web.xml. Я пытался сохранить в исходных значениях PARAM, но код не компилируется так закомментирован:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
<context-param> 
    <!-- 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
    --> 

    <param-name>javax.faces.CONFIG_FILES</param-name> 
    <param-value>/WEB-INF/faces-config.xml</param-value> 

</context-param> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<welcome-file-list> 
    <welcome-file>faces/index.xhtml</welcome-file> 
</welcome-file-list> 
</web-app> 


<param-name>javax.faces.PROJECT_STAGE</param-name> 
<param-value>Development</param-value> 

Моего файл лицо-конфигурация выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<faces-config 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
version="2.0"> 

    <navigation-rule> 
<from-view-id>/tabletsHome.xhtml</from-view-id> 
<navigation-case> 
    <from-outcome>product1</from-outcome> 
    <to-view-id>/inputForm.xhtml</to-view-id> 
</navigation-case> 
<navigation-case> 
    <from-outcome>product2</from-outcome> 
    <to-view-id>/inputForm.xhtml</to-view-id> 
</navigation-case> 

Также после перехода на следующую страницу, вы можете передать информацию на эту страницу в зависимости от того, на что нажал человек. Например, номер продукта?

Благодарим вас за любую помощь, которую вы можете предложить.

+0

Пример здесь http://stackoverflow.com/questions/3605238/how-do-you-pass-view-parameters-when-navigating-from-an-action-in-jsf2 –

ответ

1

Я не уверен, как web.xml/faces-config.xml связаны с этим. Что касается вашей проблемы с параметром контекста, просто создайте еще один <context-param>. Но это не решит вашу проблему. Что касается вашей проблемы с навигацией, у вас может быть только один метод действий, который возвращает другой результат.

public String submit() { 
    if (...) { 
     return "view1"; 
    } 
    else { 
     return "view2"; 
    } 
} 
+0

Thankyou для быстрой Ответить. Как я понял из этого сообщения: http://stackoverflow.com/questions/4304132/hcommandbutton-multiple-actions-download-file-and-render-ajax-table, было невозможно выполнить несколько действий из командной строки. Я хочу запустить javamail-метод, а затем перейти на другую страницу, на которую я думал, было два действия, поэтому мне нужно было бы определить faces-config.xml, хотя я использую jsf 2.0? – EHarpham

+0

Я думаю, что слово «действие» здесь неоднозначно. Основываясь на вашем вопросе, я интерпретировал его как метод действия управляемого компонента JSF. Но вы, по-видимому, интерпретируете его как HTTP-запрос (например, как другой вопрос/ответ обрабатывает). Почему именно вам нужно отправить 2 HTTP-запроса для этого простого случая? Или это просто ваше неверное истолкование? – BalusC

+0

После использования Action = somePage для навигации невозможно добавить две команды действий? Кажется, гораздо больше работы по редактированию двух файлов, если вам нужно добавить много навигаций. Теперь я работаю после создания faces-config.xml. Большое спасибо. – EHarpham