Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> a4j:commandButton и валидация 
:(
    Опции темы
FlashXL
Дата 4.9.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 7.8.2008

Репутация: 1
Всего: 1



Суть такова: есть кнопка a4j:commandButton, к ней прикручен экшн, который производит некую валидацию модельного объекта и если она не проходит - в FacesContext добавляется сообщение и ререндерится h:messages. В случае успешной валидации надо перейти по внешней ссылке h:outputLink. Как можно нажать на эту линку только если валидация пройдена?
PM MAIL   Вверх
golubsv
Дата 4.9.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



из екшена переход делай, я так понимаю ты жсф используеш, возврашай етим екшеном стринг , и описывай в navigation rule куда идти, если возвращаеш null страничка просто перегружается

пример екшена:
Код

package controller;

import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import model.users.User;
import model.users.UserActions;

public class SignInController {
    
    public SignInController() {
        userActions = UserActions.getInstance();
    }
    
    private UserActions userActions;
    private User user;
    public static Logger logger = Logger.getLogger("simple");
    
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    
    public String signin() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        SelectLanguage selectLanguage = (SelectLanguage) session.getAttribute("selectLanguage");
        ResourceBundle message = ResourceBundle.getBundle(selectLanguage.getMessageResources());
        try {
            user = userActions.signin(user);
            session.setAttribute("user", user);
            logger.info("success login user: " + user.getUsername());
            return "success";
        } catch (IllegalStateException e) {
            logger.error(e);
            facesContext.addMessage(null , new FacesMessage(
                    FacesMessage.SEVERITY_ERROR , 
                    message.getString("notactiv") , null));
        } catch (NullPointerException e) {
            logger.error(e);
            facesContext.addMessage(null , new FacesMessage(
                    FacesMessage.SEVERITY_ERROR , 
                    message.getString("invalidpass") , null));
        } catch (ExceptionInInitializerError e) {
            logger.error(e);
            facesContext.addMessage(null , new FacesMessage(
                    FacesMessage.SEVERITY_ERROR , 
                    message.getString("failedconnection") , null));
        } catch (IndexOutOfBoundsException e) {
            logger.error(e);
            facesContext.addMessage(null , new FacesMessage(
                    FacesMessage.SEVERITY_ERROR , 
                    message.getString("usernotfound") , null));
        } catch (Exception e) {
            logger.error(e);
            e.printStackTrace();
            facesContext.addMessage(null, new FacesMessage(
                    FacesMessage.SEVERITY_ERROR , 
                    message.getString("unknown") , e.getMessage()));
        }
        user = new User();
        session.setAttribute("user", user);
        return null;
    }

}


как оно описывается в faces-config.xml:
Код

  <managed-bean>
    <managed-bean-name>signInController</managed-bean-name>
    <managed-bean-class>
      controller.SignInController
    </managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
      <property-name>user</property-name>
      <value>#{user}</value>
    </managed-property>
  </managed-bean>

  <navigation-rule>
    <from-view-id>/home.jsp</from-view-id>
    <navigation-case>
      <from-action>#{signInController.signin}</from-action>
      <from-outcome>success</from-outcome>
      <to-view-id>/successsignin.jsf</to-view-id>
    </navigation-case>
  </navigation-rule>   



PM MAIL   Вверх
FlashXL
Дата 5.9.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 7.8.2008

Репутация: 1
Всего: 1



не, это было бы слишком просто smile надо перейти на внешний ресурс, не на мою страничку. Так бы и сам написал smile)
PM MAIL   Вверх
necromancer
Дата 6.9.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

Репутация: 6
Всего: 7



воспользоватся request.sendRedirect мораль запрещает?
Объект request можно получить из facesContext.getExternalContext().getRequest()


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
FlashXL
Дата 8.9.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 7.8.2008

Репутация: 1
Всего: 1



Была мысль воспользоваться редиректом, но у нас есть RedirectPhaseListener - не хочется его перегружать костылями чтоб этот запрос он пропускал. Сейчас есть идейка, попробую реализовать.
PM MAIL   Вверх
Dwyane
Дата 8.9.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 8.5.2007

Репутация: 1
Всего: 1



FlashXLnecromancer правильно говорит. Впринципе самый правильный вариант в твоем случае.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.