0

dataTable を使用してユーザーのリストを表示するユースケースがあります。

各レコードに対して編集リンクと表示リンクを生成しました。

私がやろうとしているのは、リンクの表示をクリックするとすぐに、別のページにユーザーの詳細が表示されることです。

<h:commandLink action="#{profile.goToViewPage(profileVar.profileId)}" value="view" />   

したがって、値は正しく Bean に渡されます。

@Named("profile")
@Scope("view")
public class ProfileDTO {

    private String firstName;
    private String lastName;
    private Date dob;

    //Getters and Setters

    private void getUser(String selectedProfile) {
        this.setDob(new Date());
        this.setFirstName("Tested from Page First");
        this.setLastName("Test from Page Last");
    }

public String goToViewPage(String selectedProfile) {
        LOG.debug("Goto View Page called for user id : {}", selectedProfile);
        getUser(selectedProfile);
        return "pretty:viewprofile";    //Using prettyfaces
    }
}

viewPage xhtml は次のようなものです。

<rich:collapsiblePanel header="Basic Details" switchType="client" expanded="true">
<h:panelGroup styleClass="align-table-center-horizontal" layout='block'>
    <h:column>
    <h:panelGrid columns="2" style="width:100%;" columnClasses="right-column half-width,left-column half-width">
            <h:column>
            <h:outputText styleClass="headerText" value="First Name" />
        </h:column>
        <h:column>
            <h:inputText value="#{profile.firstName}" />
        </h:column>
        <h:column>
            <h:outputText styleClass="headerText" value="Last Name" />
        </h:column>
        <h:column>
            <h:inputText value="#{profile.lastName}" />
        </h:column>
</h:panelGrid>
</h:column>
</h:panelGroup>
</rich:collapsiblePanel>

リストを表示するために使用している Bean は、セッション スコープにあります。

問題: メソッド get "goToViewPage" が呼び出され、ダミー データが設定されますが、後でコンストラクターが再度呼び出され、すべてのデータが失われます。

4

1 に答える 1