单击提交按钮时重定向不允许因某种原因被阻止。(JSF 2.0)

时间:2011-04-08 16:13:48

标签: java jsf java-ee jsf-2 captcha

我的一个表格有一个非常奇怪的问题。

我有一个注册用户的表单并向他/她发送电子邮件。想用新的表面替换旧的验证码。一切都很顺利,但当我点击提交按钮(并正确输入验证码)时,数据将保存在数据库中,电子邮件将被发送,但我不会被重定向到目标页面。我会告诉你一些代码,所以你知道我在说什么:

这是我刚刚在表单中添加的组件

<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 个答案:

答案 0 :(得分:2)

您需要action,而不是actionListener

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

另见: