0

Hibernate と PrimeFaces を使用して、MySQL データベースで Java と JSF プロジェクトを作成しようとしています。

Hibernate レイヤーは正常に動作します (基本的な CRUD は正常に動作します) が、Prime Faces で基本的な GUI を作成し、プロジェクトを Tomcat サーバーにデプロイすると、エラーが返されます。

Unable to create managed bean DBUserMBean. The following problems were 
found: - Bean or property class 
com/hibernate/maven/Hibernate_APP/DBUserManagedBean for managed bean 
DBUserMBean cannot be found.

私のプロジェクトのすべてのファイルは次のとおりです。

DBユーザー

@Entity
public final class DBUser{
    private Long  id;
    private String kolumna1;
    private String kolumna2;
    private String kolumna3;
    private int  kolumna4;

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public String toString() {
        StringBuffer strBuff = new StringBuffer();
        strBuff.append("id :").append(id);
        strBuff.append("kolumna1 :").append(kolumna1);
        strBuff.append("kolumna2 :").append(kolumna2);
        strBuff.append("kolumna3 :").append(kolumna3);
        strBuff.append("kolumna4 :").append(kolumna4);
        return strBuff.toString();
    }
}

DBUserManagedBean

@ManagedBean(name="DBUserManagedBean")
@SessionScoped
public class DBUserManagedBean implements Serializable{

    private static final long serialVersionUID = 1L;
    private static Logger log = Logger.getLogger(DBUserManagedBean.class);
    private static final String SUCCESS = "success";
    private static final String ERROR   = "error";

    private Long  id;
    private String kolumna1;
    private String kolumna2;
    private String kolumna3;
    private int  kolumna4;

    private String message;

    //getters and setters   

    public String getMessage() {
        StringBuffer strBuff = new StringBuffer();
        strBuff.append("id :").append(id);
        strBuff.append("kolumna1 :").append(kolumna1);
        strBuff.append("kolumna2 :").append(kolumna2);
        strBuff.append("kolumna3 :").append(kolumna3);
        strBuff.append("kolumna4 :").append(kolumna4);
        this.setMessage(strBuff.toString());
        return this.message;
    }

    public void setMessage(String message) {
        this.message = message;
    } 

    public String save() {
        String result = null;
        Session session = HibernateUtil.getSessionFactory().openSession();

        DBUser dbuser = new DBUser();

        dbuser.setKolumna1(this.getKolumna1());
        dbuser.setKolumna2(this.getKolumna2());
        dbuser.setKolumna3(this.getKolumna3());
        dbuser.setKolumna4(this.getKolumna4());

        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            session.save(dbuser);
            tx.commit();
            log.debug("New Record : " + dbuser + ", wasCommitted : " + tx.wasCommitted());
            result = SUCCESS;
        } catch (Exception e) {
            if (tx != null) {
                tx.rollback();
                result = ERROR;
                e.printStackTrace();
            }
        } finally {
            session.close();
    }
    return result;
}

public List<DBUser> getDBUsers() {
    Session session = HibernateUtil.getSessionFactory().openSession();
    List<DBUser>  dbuserList = session.createCriteria(DBUser.class).list();
    return dbuserList;
}

public void reset() {
    this.setKolumna1("");
    this.setKolumna2("");
    this.setKolumna3("");
    this.setKolumna4(kolumna4);
}

}

顔-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"

version="2.0">

<managed-bean>

    <managed-bean-name>DBUserMBean</managed-bean-name>
    <managed-bean-class>com.hibernate.maven.Hibernate_APP.DBUserManagedBean</managed-   
bean-class>
    <managed-bean-scope>session</managed-bean-scope>

</managed-bean>


<navigation-rule>
    <from-view-id>pages/index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>success</from-outcome>
        <to-view-id>pages/welcome.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>error</from-outcome>
        <to-view-id>pages/error.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

</faces-config>

index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"  
xmlns:h="http://java.sun.com/jsf/html"  
xmlns:f="http://java.sun.com/jsf/core"  
xmlns:p="http://primefaces.org/ui">  

<h:head><title>Hibernate_APP</title></h:head>
<body>
 <h:form>


     <table>
         <tr>
            <td><h:outputLabel for="kolumna1" value="kolumna1 :" /></td>
            <td><p:inputText id="kolumna1" value="#{DBUserManagedBean.kolumna1}"/></td>
         </tr>

          <tr>
            <td><h:outputLabel for="kolumna2" value="kolumna2 :" /></td>
            <td><p:inputText id="kolumna2" value="#{DBUserManagedBean.kolumna2}"/></td>
         </tr>

          <tr>
            <td><h:outputLabel for="kolumna3" value="kolumna3 :" /></td>
            <td><p:inputText id="kolumna3" value="#{DBUserManagedBean.kolumna3}"/></td>
         </tr>

          <tr>
            <td><h:outputLabel for="kolumna4" value="kolumna4 :" /></td>
            <td><p:inputText id="kolumna4" value="#{DBUserManagedBean.kolumna4}"/></td>
         </tr>



         <tr>
            <td><p:commandButton id="submit" value="Save" action="#   
{DBUserManagedBean.save}" ajax="false"/></td>
            <td><p:commandButton id="reset" value="Reset" action="#   
{DBUserManagedBean.reset}" ajax="false"/></td>

         </tr>
     </table>


 </h:form>
</body>
</html>

ようこそ.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">

<h:head>
<title>Hibernate_APP</title>
</h:head>
<body>
<h:form>
    <h:outputText value="Saved Record is #{DBUserMBean.message}"></h:outputText>
    <p:dataTable id="DBUsers" value="#{DBUserMBean.getDBUsers()}" var="DBUser"    
style="width: 10%">


        <p:column>
            <f:facet name="header">
                <h:outputText value="ID" />
            </f:facet>
            <h:outputText value="#{DBUser.id}" />
        </p:column>

       <p:column>
            <f:facet name="header">
                <h:outputText value="kolumna1" />
            </f:facet>
            <h:outputText value="#{DBUser.kolumna1}" />
        </p:column>

        <p:column>
            <f:facet name="header">
                <h:outputText value="kolumna2" />
            </f:facet>
            <h:outputText value="#{DBUser.kolumna2}" />
        </p:column>

          <p:column>
            <f:facet name="header">
                <h:outputText value="kolumna3" />
            </f:facet>
            <h:outputText value="#{DBUser.kolumna3}" />
        </p:column>


          <p:column>
            <f:facet name="header">
                <h:outputText value="kolumna4" />
            </f:facet>
            <h:outputText value="#{DBUser.kolumna4}" />
        </p:column>




    </p:dataTable>
  </h:form>
</body>
</html>

フォームからデータベースに何かを保存しようとしたときの例外は次のとおりです。

WARNING: /pages/index.xhtml @14,87 value="#{DBUserManagedBean.kolumna1}": 
Target Unreachable, identifier 'DBUserManagedBean' resolved to null
javax.el.PropertyNotFoundException: /pages/index.xhtml @14,87 
value="#{DBUserManagedBean.kolumna1}": Target Unreachable, 
identifier 'DBUserManagedBean' resolved to null
4

2 に答える 2

0

@Table(name="your Table Name")との@column注釈がありません。

のメソッド署名を削除します

value="#{DBUserMBean.getDBUsers()}"

これを試してみてください

value="#{DBUserMBean.getDBUsers}"
于 2013-04-12T05:57:19.520 に答える
-1

私の投稿が質問に答えなかった限り、コメントは作者のコードにのみ残します。

マネージド Bean は、アノテーション内faces-config.xmlとアノテーション経由の両方で 2 回宣言されてい@ManagedBeanます。あいまいさが生じるように見えるかもしれませんがfaces-config.xml、アノテーションを使用した構成よりも優先されます。ただし、私の好みでは、Bean に 2 回名前を付けて異なる名前を付けると、複数のエラーが発生する可能性があります。したがって、注釈を付けて、または xml 形式で Bean に名前を付けることをお勧めします。

ただし、これfaces-config.xmlはマネージド Bean とナビゲーション ケースの結果を定義する昔ながらの方法であることに注意してください。JSF 2.x は、注釈と暗黙的なナビゲーションをサポートしています。

ところで、クラスにはs および の@Entityアノテーションがありません。バッキング Bean には、エンティティの DTO または切り離されたエンティティ自体の DTO が必要です。など@Column@Tablewelcome

最後に、@BalusC がコメント #3 で正しく説明しているように実行し、xml 構成ファイルで完全修飾名を確認するか、クラス ファイルがビルドに物理的に存在することを確認します。

于 2013-02-25T13:19:05.790 に答える