0

我有一个用例,其中我有一个使用数据表显示的用户列表。

我已经针对每条记录生成了编辑和查看链接。

我想要做的是,一旦我点击查看链接,一个单独的页面应该包含用户的详细信息。

<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 在会话范围内。

问题:方法获取“goToViewPage”被调用并设置了虚拟数据,但后来再次调用构造函数并且所有数据都丢失了。

4

1 回答 1

0

好的,我发现了问题。更少的 jsf 和更多的漂亮面孔。问题已解决,使用查询参数并重新构建对象以供显示。

<url-mapping id="viewprofile">
    <pattern value="/a" />
    <view-id value="/a/b.jsf" />
    <query-param name="id">#{bean.id}</query-param>
    <action>#{bean.loadViewPageData}</action>
</url-mapping>

使用漂亮的面孔配置,设置将在请求重定向后调用的操作方法。

于 2013-04-19T15:54:34.740 回答