Перенаправление, когда по какой-либо причине нажатие на кнопку «Отправить» не разрешено. (JSF 2.0) - PullRequest
1 голос
/ 08 апреля 2011

У меня очень странная проблема с одной из моих форм.

У меня есть форма, которая регистрирует пользователя и отправляет ему / ей электронное письмо. Хотел заменить мою старую капчу новой. Все шло хорошо, но когда я нажимаю на кнопку отправки (и капча вводится правильно), данные сохраняются в базе данных, электронное письмо отправляется, но я не перенаправляюсь на страницу назначения. Я покажу вам немного кода, чтобы вы знали, о чем я говорю:

Это компонент, который я только что добавил в мою форму

<p:captcha label="Captcha" language="en" theme="white" publicKey="6Ld7pMESAAAAAHd1VihJkqPUXAJVwU3Cghc8fzrq"/> 
            <h:commandButton value="Registruj"
                    actionListener="#{registrationControllerBuyer.doRegisterBuyer}"/>

Также я добавил пару конфигураций в web.xml:

<!-- keys gotten from recaptcha -->
<context-param>
    <param-name>primefaces.PUBLIC_CAPTCHA_KEY</param-name>
    <param-value>6Ld7pMESAAAAAHd1VihJkqPUXAJVwU3Cghc8fzrq</param-value>
</context-param>

<context-param>
    <param-name>primefaces.PRIVATE_CAPTCHA_KEY</param-name>
    <param-value>6Ld7pMESAAAAAMhr5WSk5bcRrff8Y08NtDi8Buoq</param-value>
</context-param>

А это бит Java для обработчика кнопок:

public String doRegisterBuyer() throws Exception {
    Buyer buyer = new Buyer();
    buyer.setName(getName());
    buyer.setSecondName(getSecondName());
    buyer.setNickName("not specified");
    buyer.setEmail(getEmail());
    buyer.setPassword(getPassword());
    buyer.setAcceptedTermsAndConditions(isAcceptedTermsAndConditions());
    buyer.setNewsletterSubscription(isNewsletterSubscription());
    buyer.setAccountStatus(AccountStattus.CREATED.toString());      

    Buyer tmpBuyer = tmpBuyer = buyersRegistratorEJB.createBuyer(buyer);

    // Send activation link to user
    emailServiceEJB.sendAccountActivationLinkToBuyer(tmpBuyer.getEmail()
            .trim(), tmpBuyer.getName());
    return "registrationSucceded.xhtml";
}

Кажется, что капча работает отлично: -Если я ввел неправильный ввод в код проверки, метод doRegisteredBuyer () не выполняется -Если я получаю правильный ввод с капчи, метод doRegisteredBuyer () действительно выполняется НО я не перенаправляюсь на registrationSucceded.xhtml

Почему это так (название страницы правильное, это уже несколько раз проверялось :))?

1 Ответ

2 голосов
/ 08 апреля 2011

Вам нужно action, а не actionListener.

<h:commandButton value="Registruj" action="#{registrationControllerBuyer.doRegisterBuyer}"/>

См. Также:

...