Blackboard taglib issue with itemIdAccessor

Blackboard has a tag library which allows you to put familar Blackboard looking html objects into your Building block. One element in the tag library is an inventoryList, which gives you a nice looking list of items. An inventory list in Blackboard might render something like this:

The code to generate this list can be seen below. One special functionality of this list is to be able to re-order your list. This is done by sending an ajax call to your reorderingUrl anytime an item is moved. However, I noticed that my objects were not given the correct Id. Makes it difficult to reorder an item when your passing out incorrect Ids.

Notice the itemIdAccessor="getId()" means that item.getId() should be called to get the Id for the item. After some digging I found that getId() must return a String (it was an Integer in my case) to work correctly. This bugs me though since most Ids are typically not Strings. Oh well.

<bbNG:inventoryList collection="${questions}"
        objectVar="item" className="org.oscelot.b2evals.models.Question"
        description="Questions" reorderable="false"
        reorderType="Question ID"
        reorderingUrl="${helper.url}/questions/${template.ID}/reorder"
        itemIdAccessor="getId" itemNameAccessor="getId" showAll="true">

        <bbNG:listElement isRowHeader="true" label="Question Text" name="question_text">
                ${item.text}
                <bbNG:listContextMenu>
                        <bbNG:contextMenuItem title="Edit Question" url="${helper.url}/questions/${item.ID}" />
                        <bbNG:contextMenuItem title="Remove Question" url="javascript:bbHelper.deleteQuestion('${helper.url}/questions/${template.ID}/delete/${item.ID}');" />
                </bbNG:listContextMenu>
        </bbNG:listElement>

        <bbNG:listElement isRowHeader="false" label="Question Type" name="question_type">
                <c:choose>
                        <c:when test="${item.type==1}">
                                Rating
                        </c:when>
                        <c:when test="${item.type==2}">
                                Comment
                        </c:when>
                        <c:when test="${item.type==3}">
                                Rating and Comment
                        </c:when>
                        <c:otherwise>
                                Unknown Type?!
                        </c:otherwise>
                </c:choose>
        </bbNG:listElement>
</bbNG:inventoryList>
post by K.D. on 11/26/2011