2009-12-29 2 views
0

У меня есть богатый: dataTable и rich: dataScroller. Когда я нажимаю на datascroller, мой dataTable не обновляется автоматически, чтобы показать правильную страницу. Если, однако, я нажимаю кнопку обновления, то в таблице данных отображается правильная страница.rich: dataScroller не обновляется: dataTable в JSF

Что я делаю неправильно?

Вот мой код:

<rich:dataTable id="applicantsTable" 
binding="#{applicantListManBean.applicantsDataTable}" 
value="#{applicantListManBean.applicantsList}" var="applicant" 
rows="10" width="650"> 

<h:column> 
    <f:facet name="header"> 
     <h:outputText value="Name" /> 
    </f:facet> 
    <h:outputText value="#{applicant.name}" /> 
</h:column> 

<h:column> 
    <f:facet name="header"> 
     <h:outputText value="Email" /> 
    </f:facet> 
    <h:outputText value="#{applicant.email}" /> 
</h:column> 

<h:column> 

    <f:facet name="header"> 
     <h:outputText value="Action" /> 
    </f:facet> 

    <h:commandLink action="#{applicantListManBean.showApplicantProducts}" 
     rendered="true"> 
     <h:graphicImage value="/images/icons/view.png" width="15" height="15" 
      alt="view" /> 
     <f:setPropertyActionListener 
      target="#{applicantListManBean.tempApplicant}" value="#{applicant}" /> 
    </h:commandLink> 

    <h:commandLink action="#{applicantListManBean.deleteApplicant}" 
     rendered="true"> 
     <h:graphicImage value="/images/icons/delete.png" width="15" 
      height="15" alt="view" /> 
     <f:setPropertyActionListener 
      target="#{applicantListManBean.tempApplicant}" value="#{applicant}" /> 
    </h:commandLink> 

</h:column> 
</rich:dataTable> 

<rich:datascroller id="applicantsScroller" for="applicantsTable" 
reRender="sc1" maxPages="7" page="#{applicantListManBean.scrollerPage}" /> 

UPDATE: Javascript ошибка прилагается: alt text

1: http://imgur.com/132fL.png

ответ

1

Проблема в час: commandLink. Это как-то создает проблемы для богатых: datatable. Вместо этого используйте a4j: commandLink или s: link (если вы используете Jboss Seam).

2

Удалить reRender="sc1". Вы скопировали это из демонстрации RichFaces, но вы удалили компонент «sc1», поэтому, возможно, произошла ошибка javascript, которая предотвращает обновление таблицы.

Также убедитесь, что у вас есть dataTable и datascroller окружении <h:form>..</h:form> (как в одной форме)

+0

Я удалил его, но не повезло ... –

+1

не видеть ваше FireFox консоль JavaScript для любых JS ошибок и дать им здесь – Bozho

+0

Спасибо, прилагается , –

0

Ввести идентификатор rich:datatable и reRender в rich:datascroller в таблицу, как показано ниже. Это работает для меня:

<f:view> 
    <a4j:keepAlive beanName="datosCtrlBean" ajaxOnly="true"/> 
    <h:form> 
     <rich:dataTable reRender="sc2" width="300" id="carList" rows="10" columnClasses="col" 
          value="#{datosCtrlBean.datos}" var="category" id="myTable" > 

       <f:facet name="header"> 
        <rich:columnGroup> 
         <h:column> 
          <h:outputText styleClass="headerText" value="Make" /> 
         </h:column> 
        </rich:columnGroup> 
       </f:facet> 
       <h:column> 
        <h:outputText value="#{category}" /> 
       </h:column> 
       <f:facet name="footer"> 
       <rich:datascroller align="left" for="carList" id="sc2" ajaxSingle="true" reRender="myTable" limitToList="myTable"/> 
       </f:facet> 
      </rich:dataTable> 
    </h:form> 
</f:view> 
1

Возможно, вы захотите рассмотреть использование тега saveState или поместить обработчик в область сеанса. Причина, по которой это, вероятно, происходит, состоит в том, что у вас есть обработчик в области запроса, и поскольку commandLink - это другой запрос, он не может найти экземпляр исходного обработчика для отправки обратно. Просто имея этот saveState здесь, мой начал работать.

Просто мысль.

+0

Я уже ответил на вопрос. –

0

неправильно ..

попробовать:

<rich:dataTable width="300" id="carList" rows="10" columnClasses="col" 
         value="#{datosCtrlBean.datos}" var="category" > 


      <rich:datascroller align="left" for="carList" id="sc2" ajaxSingle="true" reRender="carList" limitToList="carList"/> 
+0

Добро пожаловать в SO! Для посетителей, которые могли бы найти ответ на этот вопрос, не могли бы вы немного рассказать об этом и объяснить _why_ нужно попробовать? – Kryten

Смежные вопросы