Tapestry
  1. Tapestry
  2. TAPESTRY-2502

When the GridDataSource reports more available rows than actual rows (due to race conditions with updates), the Grid will fail because of IndexOutOfRange exceptions

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.13
    • Fix Version/s: 5.0.14
    • Component/s: Core Components
    • Labels:
      None

      Description

      GridDataSource requires you to return the number of rows from the
      getAvailableRows method. Later prepare gets called allowing you to get
      the records (or some of). Now if between the call to getAvailableRows
      and prepare some records are deleted you'll end up with less records
      then reported by getAvailableRows. Now what should be returned from
      getRowValue? I tried returning null but that was not allowed (like in
      exceptions occured).

      What I would like is that when getRowValue returns
      null that the grid stops requesting more rows. This would also make it
      easier when you do not know how many rows you have in advance.

        Activity

        Hide
        Martijn Brinkers added a comment -

        As a workaround you can return an 'empty' row element and set the rowClass for this row to make the row invisible.

        Example:

        public String getRowClass()
        {
        String rowClass = null;

        if (certificate.isNull())

        { /* * It's an empty row. */ rowClass = nullRowClass; }

        return rowClass;
        }

        and nullRowClass something like:

        .empty-element

        { display : none; }
        Show
        Martijn Brinkers added a comment - As a workaround you can return an 'empty' row element and set the rowClass for this row to make the row invisible. Example: public String getRowClass() { String rowClass = null; if (certificate.isNull()) { /* * It's an empty row. */ rowClass = nullRowClass; } return rowClass; } and nullRowClass something like: .empty-element { display : none; }

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Martijn Brinkers
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development