0

在我的 XPage 上,我有一系列搜索过滤器(州、名字和姓氏)。搜索按钮触发绑定到托管 Bean 的数据表的填充。

数据表最初填充了数据行。但是,当我单击 Next(在寻呼机中)时,它不会加载接下来的 5 行,而是不再返回数据。我知道数据表的行数正确,因为如果我将数据表中的重复限制更改为 10,它们都会显示。此外,寻呼机中的页数为 2(这是正确的数字)。

有什么想法可能导致这种情况吗?

谢谢,

数据表代码:

    <xp:dataTable rows="5" id="studentTable" var="currentStudent"
        style="width:400.0px" value="#{studentlist.students}">
        <xp:column id="firstnameColumn" style="font-weight:bold">
            <xp:this.facets>
                <xp:span xp:key="header">
                    <xp:span style="font-weight:bold">
                        First Name
                    </xp:span>
                </xp:span>
            </xp:this.facets>
            <xp:text escape="true" id="firstnameField"
                value="#{currentStudent.firstname}">
            </xp:text>
        </xp:column>
        <xp:column id="column1">
            <xp:text escape="true" id="middleinitialField"
                value="#{currentStudent.middleName}">
            </xp:text>
            <xp:this.facets>
                <xp:span xp:key="header">
                    <xp:span style="font-weight:bold">
                        Middle Name
                    </xp:span>
                </xp:span>
            </xp:this.facets>
        </xp:column>
        <xp:column id="lastnameColumn" style="font-weight:bold">
            <xp:this.facets>
                <xp:span xp:key="header">
                    <xp:span style="font-weight:bold">
                        Last Name
                    </xp:span>
                </xp:span>
            </xp:this.facets>
            <xp:text escape="true" id="lastnameField"
                value="#{currentStudent.lastname}">
            </xp:text>
        </xp:column>
        <xp:column id="idColumn">
            <xp:this.facets>
                <xp:span xp:key="header">
                    <xp:span style="font-weight:bold">ID</xp:span>
                </xp:span>
            </xp:this.facets>               
            <xp:text escape="true" id="computedField1"
                value="#{currentStudent.id}">
            </xp:text>
        </xp:column>
        <xp:this.facets>
            <xp:pager layout="Previous Group Next" xp:key="header"
                id="pager1" for="studentTable" partialRefresh="true">
            </xp:pager>
        </xp:this.facets></xp:dataTable>

按钮后面的代码:

    var state=getComponentValue('state');
    var firstName=document1.getItemValueString("firstName");
    var lastName=document1.getItemValueString("lastName");
    if(state == "--" || firstName == "" || lastName == "")
    {
    //do nothing
    }
    else{
    studentlist.setConnDB("jdbc:sqlserver://XX.XX.X.XX:1433;DatabaseName=dan_test");
    studentlist.setConnUserName("test");
    studentlist.setConnPassword("Password1");
    studentlist.setSQLQuery("SELECT FirstName,MiddleName,LastName,ID FROM TestStudents        WHERE FirstName Like '"+firstName+"%' AND LastName Like '"+lastName+"%' AND State = '"+state+"' ORDER BY LastName ASC");
4

2 回答 2

1

我在这里做了一些假设,但没有看到您的 MBean 代码,但希望能够为您指明正确的方向......

确保在调用getStudents()调用期间恢复 studenLists bean 中的数据模型。我看到你在上面的 XSP 片段中有value="#{studentlist.students}" ......应该映射到bean 上的getStudents()方法,返回学生对象的DataModel等......大概是吗?所以,这里要记住几件事......确保 bean 至少在viewScope 中(最好),并且你在 getStudents() 方法中基于非瞬态“恢复包装的数据”缓冲区(例如:保存当前过滤的“学生”对象集的 ArrayList - 并确保学生对象的缓冲区是可序列化的 - 对于“磁盘持久性”至关重要!

如果您使用这种方法,Pager 将始终针对针对当前视图发布的每个后续分页请求的最新恢复的数据模型“分页” - 页面索引等由 DataModel 对象内部管理。

例如:

1.不恢复:

    ...
    私有瞬态数据模型 studentSearchResults;
    私有瞬态列表搜索结果;
    ...
    公共数据模型 getStudents() {
        if (null == studentSearchResults) {
            studentSearchResults = new ListDataModel();
        }
        返回学生搜索结果;
    }

相对:

2.带恢复:

    ...
    私有瞬态数据模型 studentSearchResults;
    私人列表搜索结果;
    ...
    公共数据模型 getStudents() {
        if (null == studentSearchResults) {
            学生搜索结果=新列表数据模型();
            如果(空!=搜索结果){
                studentSearchResults.setWrappedData(searchResults);
            }
        }
        返回学生搜索结果;
    }

于 2013-04-30T19:54:36.183 回答
0

如果您添加另一个仅部分刷新数据表的按钮,您是否也会丢失数据?这应该确定是托管 bean 属性被重置的问题(在这种情况下 dataTable 的内容会消失)还是分页问题(在这种情况下它们不会)。

于 2013-04-30T15:54:08.243 回答