我的一个表格有一个非常奇怪的问题。
我有一个注册用户的表单并向他/她发送电子邮件。想用新的表面替换旧的验证码。一切都很顺利,但当我点击提交按钮(并正确输入验证码)时,数据将保存在数据库中,电子邮件将被发送,但我不会被重定向到目标页面。我会告诉你一些代码,所以你知道我在说什么:
这是我刚刚在表单中添加的组件
<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
为什么(页面名称正确,已经检查了几次:))?
答案 0 :(得分:2)
您需要action
,而不是actionListener
。
<h:commandButton value="Registruj" action="#{registrationControllerBuyer.doRegisterBuyer}"/>