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" が呼び出され、ダミー データが設定されますが、後でコンストラクターが再度呼び出され、すべてのデータが失われます。