0

primefaces を使用して JSF ページに表示したいユーザーのリストがありますp:datatable。例外はありませんが、列のタイトルが表示されていなくても、リストにあるデータを表示できません。実際、'getUserListe()'サービスレイヤーを呼び出してデータベースからデータを取得するメソッドを使用しています。その中で、いくつかのプロパティ (モデル クラス) の sysprint() を追加しました。URLuserDomainにアクセスすると、データ テーブルに UserListe のデータを入力したいので、それを で呼び出しますvalue="#{userMB.userListe}"。問題は、リストが表示されません。しかし、私のコンソールで getUserListe() が呼び出されることを意味して、ページが課金されると、プロパティが正常に出力されます。:

私のマネージドBeanの一部:

@ManagedBean(name="userMB")
@RequestScoped
public class UserManagedBean implements Serializable {

        private List<UserDomain> userListe ;
    public List<UserDomain> getUserListe() {
            this.userListe = new ArrayList<UserDomain>();
            this.userListe.addAll(getUserServicee().getAll());
            for(UserDomain u : userListe)
                System.out.println(u.getFirstName());
            return userListe;
        }

        public void setUserListe(List<UserDomain> userListe) {
            this.userListe = userListe;
        }

私のjsf.xhtmlファイルの一部:

<h:form>
        <h:outputText value="USER's rights list: "></h:outputText>
        <p:dataTable id="userss" var="userr" value="#{userMB.userListe}" style="width: 10%">

            <h:column>
                    <f:facet name="header"><h:outputText value="FirstName" /></f:facet>                     
                    <h:outputText value="#{userr.firstName}"  />                    
            </h:column>

            <h:column>
                    <f:facet name="header"><h:outputText value="LastName" /></f:facet>                  
                    <h:outputText value="#{userr.lastName}"  />                 
            </h:column>

            <h:column>                  
                    <f:facet name="header"><h:outputText value="Action" /></f:facet>                    
                    <h:commandLink value="Edit" action="#{userMB.editAction(userr)}"  />                
            </h:column>

        </p:dataTable> 

        <h:commandButton value="OK" action="#{userMB.userProp}" />
    </h:form>

私のユーザーには、プロパティのすべてのゲッターとセッターが正しく設定されていることに注意してください。助けてくれてありがとう

4

1 に答える 1

0

@luiggi がコメントで を by を変更して言ったように実行しましたが、うまく<h:column>いき<p:column>ました。ありがとうございます。また、マネージド Bean を から に変更し@RequestScopedました@ViewScoped

私が追加してあなたと共有したいもう1つのことは、この投稿のコメントを読んだ後にいくつかの調査を行ったことです.システムイベントのリスナーなので、私のjsfファイルに追加します

<f:view>
    <f:event type="preRenderView" listener="#{userMB.loadUserListe}" />
...

私の BeanのloadUserListe()メソッドは、ユーザーのリストをインスタンス化するビジネス ロジック コードを呼び出します。もちろん、jsf ページは f:view で囲まれています。このリスナーを使用するには、少なくとも JSF 2.0 が必要であることにも注意してください。

助けてくれてありがとう、そして私の英語ですみません、この回答が他の人の助けになることを願っています

于 2012-08-01T22:36:25.777 に答える