Java 在类型[controller.AppController]上找不到属性[name]。为什么?

Java 在类型[controller.AppController]上找不到属性[name]。为什么?,java,hibernate,Java,Hibernate,我正在尝试完成一个用户帐户数据库的实现,包括注册过程。遗憾的是,hibernate似乎没有找到必要的属性 在一项研究中,我被要求在给定的数据库中安全地保存密码。此部分将在源代码中删除。(这碰巧不是一个问题,但其他研究成员可能会受到影响。)我已经尝试以所有可能的组合对AppController.java和AppUser.java中的ManagedProperty注释进行注释/取消注释,但它们似乎都没有让我进一步找到解决方案。只添加了“循环引用”消息 关于同一问题的许多其他SE问题似乎忽略了它们的g

我正在尝试完成一个用户帐户数据库的实现,包括注册过程。遗憾的是,hibernate似乎没有找到必要的属性

在一项研究中,我被要求在给定的数据库中安全地保存密码。此部分将在源代码中删除。(这碰巧不是一个问题,但其他研究成员可能会受到影响。)我已经尝试以所有可能的组合对AppController.java和AppUser.java中的ManagedProperty注释进行注释/取消注释,但它们似乎都没有让我进一步找到解决方案。只添加了“循环引用”消息

关于同一问题的许多其他SE问题似乎忽略了它们的getter或setter方法的正确命名或正确的注释语法,但在我的例子中,这似乎不是问题所在

这是我第一次使用hibernate,所以我有点迷路了。(例如,我不知道是否必须在声明带注释的变量之前设置注释。)将AppController.hbm.xml重命名为Appuser.hbm.xml也不能解决问题

我希望像您这样的专家能够很容易地看到这个问题,因为一个完整的最小示例将有相当多的文件要呈现

Appuser.java:

包模型;
导入javax.faces.bean.ManagedProperty;
导入javax.persistence.*;
导入javax.validation.constraints.NotNull;
导入javax.validation.constraints.Size;
导入java.util.Date;
导入org.hibernate.validator.constraints.NotBlank;
@实体
@表(name=“APPUSER”)
公共类Appuser{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-id;
@尺寸(最小值=3,最大值=50)
@列(name=“FIRSTNAME”,nullable=false)
@ManagedProperty(value=“#{appController.firstname}”)
私有字符串名;
@尺寸(最小值=3,最大值=50)
@列(name=“姓氏”,null=false)
@ManagedProperty(value=“#{appController.name}”)
私家姓;
@NotNull
@列(name=“BIRTHDATE”,null=false)
私人生日;
@不空白
@列(name=“EMAIL”,nullable=false)
私人字符串电子邮件;
@不空白
@列(name=“GENDER”,nullable=false)
//@ManagedProperty(value=“#{appController.gender}”)
私人字符串性别;
@不空白
@列(name=“USERNAME”,null=false)
私有字符串用户名;
@不空白
@列(name=“SALTED\u HASED\u PW”,nullable=false)
私有字符串salt_散列;
@不空白
@列(name=“SALT”,nullable=false)
私有字节[]盐;
公共应用程序用户(){
firstname=新字符串();
姓氏=新字符串();
生日=新日期();
email=新字符串();
用户名=新字符串();
salted_hash=新字符串();
salt=新字节[64];
}
公共字节[]getSalt(){
返盐;
}
公共void setSalt(字节[]salt){
盐=盐;
}
公共字符串getFirstname(){
返回名字;
}
public void setFirstname(字符串firstname){
this.firstname=firstname;
}
公共字符串getNames(){
返回姓氏;
}
public void setSurname(字符串姓氏){
this.姓氏=姓氏;
}
公共日期getBirthdate(){
返回出生日期;
}
公共无效设置出生日期(日期出生日期){
this.birthdate=生日;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getGender(){
返回性别;
}
公共无效设置性别(字符串性别){
这个。性别=性别;
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getSalted_hash(){
返回盐渍杂烩;
}
public void setSalted_散列(字符串salted_散列){
this.salted_hash=salted_hash;
}
}
AppController.java:

包装控制器;
导入java.beans.Transient;
导入java.util.Date;
导入javax.faces.application.FacesMessage;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ManagedProperty;
导入javax.faces.bean.RequestScope;
导入javax.faces.context.FacesContext;
导入java.security.SecureRandom;
导入javax.crypto.SecretKeyFactory;
导入javax.crypto.spec.SecretKeySpec;
导入javax.crypto.SecretKey;
// ... 安全进口
导入模型Appuser;
导入dao.UserDAO;
@ManagedBean(name=“appController”,eager=true)
@请求范围
公共类AppController{
专用字节salt[]=新字节[64];
//@ManagedProperty(value=“#{appController.firstname}”)
私用刀刀;
私有字符串名;
//@ManagedProperty(value=“#{appController.name}”)
私家姓;
//@ManagedProperty(value=“#{appController.birthdate}”)
私人生日;
//@ManagedProperty(value=“#{appController.email}”)
私人字符串电子邮件;
//@ManagedProperty(value=“#{appController.gender}”)
私人字符串性别;
//@ManagedProperty(value=“#{appController.username}”)
私有字符串用户名;
//@ManagedProperty(value=“#{appController.password}”)
私有字符串密码;
公共字符串注册(){
返回“注册”;
}
public boolean saveUser()引发NoSuchAlgorithmException,InvalidKeySpecException{
Appuser newUser=新Appuser();
newUser.setFirstname(firstname);
newUser.setSurname(姓氏);
newUser.setBirthdate(出生日期);
newUser.setEmail(email);
newUser.setGender(性别);
newUser.setUsername(用户名);
newUser.setSalt(salt);
//使用加密库生成变量k not
Exception
javax.servlet.ServletException: /registration.xhtml @27,91 value="#{appController.surname}": Property [surname] not found on type [controller.AppController]
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Root Cause
javax.el.PropertyNotFoundException: /registration.xhtml @27,91 value="#{appController.surname}": Property [surname] not found on type [controller.AppController]
    com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
    javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    javax.faces.component.UIOutput.getValue(UIOutput.java:174)
    javax.faces.component.UIInput.getValue(UIInput.java:291)
    com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Root Cause
javax.el.PropertyNotFoundException: Property [surname] not found on type [controller.AppController]
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260)
    javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212)
    javax.el.BeanELResolver.property(BeanELResolver.java:347)
    javax.el.BeanELResolver.getValue(BeanELResolver.java:92)
    com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
    com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    javax.faces.component.UIOutput.getValue(UIOutput.java:174)
    javax.faces.component.UIInput.getValue(UIInput.java:291)
    com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Hinweis Der komplette Stacktrace der Ursache ist in den Server logs zu finden