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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<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>