обновить данные в datatable на экране (jsp) - PullRequest
0 голосов
/ 10 мая 2011

У меня есть данные в моем JSP, который выбирает данные из базы данных.я включил ссылку в каждую строку таблицы данных, которая по клику переходит к другому jsp (history.jsp), принимающему 2 входных параметра.

Student.jsp

<h:dataTable id="dt1" value="#{Student.stuList}" var="stuList" >
                    <h:column>
                    <f:facet name="header">
                        <h:outputText value="Student Name"/>
                    </f:facet>
                    <h:outputText value="#{stuList.stuName}"></h:outputText>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Student Number"/>
                    </f:facet>
                    <h:outputText value="#{stuList.stuNum}"></h:outputText>
                </h:column>

                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Student History"/>
                    </f:facet>
                    <h:form>
                        <h:commandLink id = "historyBtn" value="Student History" action="#{stuBean.showHistory}">
                            <f:param name="sName" value="#{stuList.stuName}" />
                            <f:param name="sNumber" value="#{stuList.stuNum}" />
                        </h:commandLink></h:form>
                </h:column>
            </h:dataTable>

history.jsp

<h:dataTable id="dt2" value="#{StuHistory.stuHistory}" var="stuHistory" >

                <h:column>
                    <f:facet name="header">
                        <h:outputText style=""value="Marks in test1" />
                    </f:facet>
                    <h:outputText style="" value="#{stuHistory.test1}" ></h:outputText>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Marks in test2"/>
                    </f:facet>
                    <h:outputText value="#{stuHistory.test2}" ></h:outputText>
                </h:column>
              </h:dataTable>
             <h:form>
           <h:commandButton id = "backBtn" value="Back to StuList" action="#{stuBean.backToStuList}">
             </h:commandButton> </h:form>

StudentBean

public String backToStuList() {
    return "stuList";
}

public String showHistory() {
    sHistory.getStuHistory();
    return "stuHistory";
}

StudentHistory.java (класс действия)

private List stuHistory = new ArrayList();
String sNum;
String sName;

public List getStuHistory() {
    getStuHistoryFromDb(sNum, sName);
    return stuHistory;
}    

face-config.xml

<managed-bean>
    <managed-bean-name>stuBean</managed-bean-name>
    <managed-bean-class>
        com.klit.bean.StudentBean
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>Student</managed-bean-name>
    <managed-bean-class>
        com.klit.action.Student
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>StuHistory</managed-bean-name>
    <managed-bean-class>
        com.klit.action.StuHistory
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<navigation-rule>
    <from-view-id>Student.jsp</from-view-id>
    <navigation-case>
        <from-action>#{stuBean.showHistory}</from-action>
        <from-outcome>stuHistory</from-outcome>
        <to-view-id>/StudentHistory.jsp</to-view-id>
    </navigation-case>
</navigation-rule>
<navigation-rule>
    <from-view-id>/StudentHistory.jsp</from-view-id>
    <navigation-case>
        <from-action>#{stuBean.backToStuList}</from-action>
        <from-outcome>stuList</from-outcome>
        <to-view-id>/Student.jsp</to-view-id>
    </navigation-case>
</navigation-rule>

TheПроблема, с которой я сталкиваюсь, это первый раз, когда я запускаю student.jsp, он работает нормально, но когда я нажимаю на историю и возвращаюсь, данные добавляются к существующим данным, т. е. у меня теперь удваивается размер списка. Каждый раз, когда я возвращаюсь к немуэто та же проблема.это похоже на мой history.jsp, там также добавляется список с существующими данными.Любые идеи, чтобы обновить страницу или Datatable ????

1 Ответ

2 голосов
/ 10 мая 2011

Это звучит как проблема с областями видимости или сбросом списка в вашем bean-компоненте.

Вы должны убедиться, что ваш компонент и списки воссоздаются при каждом переключении страниц. Это можно сделать с помощью bean-объекта видимости или запроса bean-объекта.

Или, если вам нужен сессионный компонент, вы можете сбросить списки в ваших методах действия.

Это зависит от того, как заполнены ваши списки. Если вы опубликуете часть своего компонента, которая заполняет список, мы можем пойти дальше.

ОБНОВЛЕНИЕ: Вы должны очистить свой список в вашем getStuHistoryFromDb методе. Поместите это в начало метода:

stuHistory = new ArrayList();

Тогда ваш список пуст до того, как он будет заполнен (снова). Сделайте то же самое для другого списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...