は、私が実装しようとしています更新、私はa4jを使用していますGoogleのインデックスページにJSFのSEAMを使用して機能「パスワードを忘れてしまった」ではない:jsFunctionは2のSEAMステートレスBeanは
経由でユーザーの電子メールやカード番号を送信すること(文字列として)電子メールを送信するだけでうまくいくようですが、カード番号(int)を追加すると、次のように投げられました。
原因:javax.el.PropertyNotFoundException:/index.xhtml @ 256,138 assignTo = "#{forgotPasswordActions.cardnumber}":クラス 'org.javassist.tmp.java.lang.Object _ $$ _ javassist_seam_5'には 'cardnumber'というプロパティはありません。
バッキングBeanは、次のようになります...
@Stateless
@Name("forgotPasswordActions")
public class ForgotPasswordActionsBean implements ForgotPasswordActions, Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Logger private Log log;
@In private EmailService emailService;
@In private UserDAO userDAO;
@In private MessagePoster messagePoster;
@In private Map<String, String> messages;
private User user;
private String address;
private String email;
private int cardnumber;
@Override
public void resetPassword(){
new RunAsOperation(true) {
public void execute() {
if(StringUtils.isNotEmpty(email)){
user = userDAO.findByEmail(email);
}
else{
messagePoster.postPopupInfoMessage(messages.get("inputEmpty"));
}
if(user!=null && cardnumber == user.getCardId()){
String newPassword = generateRandomPassword();
log.debug("updating password...");
user.setPassword(newPassword);
user = userDAO.makePersistent(user);
address = user.getEmail();
log.debug("password changed to: "+newPassword);
Map<String, Object> emailInfo = new HashMap<String, Object>();
emailInfo.put("name", user.getFirstname());
emailInfo.put("newPassword", newPassword);
emailService.sendToAddress(Email.user_password_reset, address, emailInfo);
messagePoster.postPopupInfoMessage(messages.get("pwReset")+" "+user.getEmail());
}
else{
messagePoster.postPopupInfoMessage(messages.get("resetFailed"));
}
}
}.run();
}
//---------------------- Setters
@Override
public void setEmail(String email) {
this.email = email;
}
@Override
public void setCardno(int cardnumber) {
this.cardnumber = cardnumber;
}
}
とJSF/HTML
<div id="forgotPasswordDialog" title="Forgot Password">
<div class="textBox">
<input id="emailLookupval" type="text" />
<input id="cardNoval" type="text" />
<button onclick="resetPassword(jQuery('#emailLookupval').val(),jQuery('#cardNoval').val())" type="button">Reset</button>
<a4j:form id="forgotPassword">
<a4j:jsFunction name="resetPassword"
action="#{forgotPasswordActions.resetPassword}"
oncomplete="jQuery('#forgotPasswordDialog').dialog('open')">
<a4j:actionparam name="userEmail" assignTo="#{forgotPasswordActions.email}" />
<a4j:actionparam name="userCardno" assignTo="#{forgotPasswordActions.cardnumber}" />
</a4j:jsFunction>
</a4j:form>
</div>
</div>
それは文句を言わないこのBeanのプロパティを設定し、なぜ私はうまくカント?どんな助けにも感謝!
素晴らしいが...おかげで! – DaveB
ようこそ。 – BalusC