Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SEAM无状态bean未更新_Java_Jsf_Seam_Ajax4jsf - Fatal编程技术网

Java SEAM无状态bean未更新

Java SEAM无状态bean未更新,java,jsf,seam,ajax4jsf,Java,Jsf,Seam,Ajax4jsf,我试图在我们的索引页面中使用JSF SEAM实现“忘记密码”功能,我使用a4j:JSF功能通过两个 当我只是发送电子邮件(作为字符串)时,它似乎工作得很好,但当我添加卡号(int)时,它抛出了以下内容 原因:javax.el.PropertyNotFoundException:/index.xhtml@256138 assignTo=“#{forgotPasswordActions.cardnumber}”:类“org.javassist.tmp.java.lang.Object”\u$$\ u

我试图在我们的索引页面中使用JSF SEAM实现“忘记密码”功能,我使用a4j:JSF功能通过两个

当我只是发送电子邮件(作为字符串)时,它似乎工作得很好,但当我添加卡号(int)时,它抛出了以下内容

原因:javax.el.PropertyNotFoundException:/index.xhtml@256138 assignTo=“#{forgotPasswordActions.cardnumber}”:类“org.javassist.tmp.java.lang.Object”\u$$\ uJavassist\uSeam\u5”没有属性“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;
    }

}
@无状态
@名称(“forgotPasswordActions”)
公共类ForgotPasswordActions bean实现ForgotPasswordActions,可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
@记录器私有日志;
@私人电子邮件服务;
@在私有的UserDAO中UserDAO;
@私人信息海报;
@在私有地图消息中;
私人用户;
私有字符串地址;
私人字符串电子邮件;
私人内部卡号;
@凌驾
公共无效重置密码(){
新运行操作(真){
public void execute(){
if(StringUtils.isNotEmpty(电子邮件)){
user=userDAO.findByEmail(电子邮件);
}
否则{
messagePoster.postpupinfomessage(messages.get(“inputEmpty”);
}
if(user!=null&&cardnumber==user.getCardId()){
字符串newPassword=generateRandomPassword();
调试(“更新密码…”);
user.setPassword(newPassword);
user=userDAO.makePersistent(用户);
地址=user.getEmail();
log.debug(“密码更改为:”+newPassword);
Map emailInfo=newhashmap();
emailInfo.put(“name”,user.getFirstname());
emailInfo.put(“newPassword”,newPassword);
emailService.sendToAddress(Email.user\u密码\u重置、地址、emailInfo);
messagePoster.postPopupInfoMessage(messages.get(“pwret”)+“”+user.getEmail());
}
否则{
messagePoster.postPopupInfoMessage(messages.get(“resetFailed”);
}
}
}.run();
}
//----------------------二传手
@凌驾
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
@凌驾
公共无效设置卡号(内部卡号){
this.cardname=cardname;
}
}
还有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属性??感谢您的帮助

您的setter被称为
setCardno()
,而
setCardnumber()
是视图所期望的。
{bean.property}
与bean中的属性名称无关。它与getter/setter方法名有关。有两种方法可以解决此问题:

  • 重命名setter方法:

    public void setCardnumber(int cardnumber) {
        this.cardnumber = cardnumber;
    }
    
  • 或者,重命名视图属性:

    assignTo="#{forgotPasswordActions.cardno}"
    

您的setter被称为
setCardno()
,而
setcardname()
是视图所期望的。
{bean.property}
与bean中的属性名称无关。它与getter/setter方法名有关。有两种方法可以解决此问题:

  • 重命名setter方法:

    public void setCardnumber(int cardnumber) {
        this.cardnumber = cardnumber;
    }
    
  • 或者,重命名视图属性:

    assignTo="#{forgotPasswordActions.cardno}"