如何访问通过Java发送到JSP的Maps数组?

时间:2015-09-24 19:20:13

标签: java eclipse jsp jstl

在java命令中,我将一些地图放入TypedProperty,如下所示:

private TypedProperty populateOrderItemsDataStructure(TypedProperty tp)
{   
    final String METHODNAME = "populateOrderItemsDataStructure";
    if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
        LOGGER.entering(CLASSNAME, METHODNAME);
    }

    for(int i = 0; i < orderItems.size(); i++)
    {
        Map orderItemsMap = new HashMap();
        String orderItemsString = orderItems.get(i).toString().substring(1, orderItems.get(i).toString().length() - 1); //convert to string and remove brackets
        while(true)
        {
            int firstNewline = orderItemsString.indexOf("\n");
            if(firstNewline <= 0)
            {
                break;
            }
            String thisItem = orderItemsString.substring(0, firstNewline);
            thisItem = thisItem.trim();

            String itemKey = thisItem.substring(0, thisItem.indexOf("="));
            String itemVal = thisItem.substring(thisItem.indexOf("=") + 1);

            orderItemsMap.put(itemKey, itemVal);                

            orderItemsString = orderItemsString.substring(firstNewline + 1);            
        }
        String oiKey = "orderItem" + i;
        tp.put(oiKey, orderItemsMap);
    }

    if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
        LOGGER.exiting(CLASSNAME, METHODNAME);
    }

    return tp;
}

我执行此操作,然后将其附加到SendMsgCmd,如此:

SendMsgCmd cmdSendMsg = (SendMsgCmd)CommandFactory.createCommand("com.ibm.commerce.messaging.commands.SendMsgCmd", storeId);

TypedProperty tp = new TypedProperty(); 
tp = populateOrderItemsDataStructure(tp);       
cmdSendMsg.compose(null, getCommandContext(), tp);

我可以稍后完成

cmdSendMsg.execute();

这样可以完美地运行并将JSP输出到html文件。

我的问题是我不知道如何在我的JSP中访问这些地图。

这是根据Eclipse执行cmdSendMsg.compose(null, getCommandContext(), tp);之后的数据结构:

data structure

所以我试图访问cmdSendMsg中的数据 - &gt; composeCommandParms - &gt;我的JSP中的elementData,但我无法弄清楚如何做到这一点。我正在尝试按照

的方式行事
<c:forEach var="orderItem" items="${ composeCommandParms.elementData }" >
    <c:forEach var="orderItemParam" items="${ orderItem }">
        <p>${ orderItemParam.key}:&nbsp${ orderItemParam.value }</p>
    </c:forEach>
</c:forEach>

但无论我尝试放入第一项= $ {},它都是空的。有趣的是,如果我只在JSP上执行`$ {orderItem0},它会打印出orderItem0的所有数据。但我希望能够遍历订单项列表,这就是我以这种方式构建数据的原因。有人可以帮我弄清楚如何访问这些订单商品的清单吗?

0 个答案:

没有答案