在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);
之后的数据结构:
所以我试图访问cmdSendMsg中的数据 - &gt; composeCommandParms - &gt;我的JSP中的elementData,但我无法弄清楚如何做到这一点。我正在尝试按照
的方式行事<c:forEach var="orderItem" items="${ composeCommandParms.elementData }" >
<c:forEach var="orderItemParam" items="${ orderItem }">
<p>${ orderItemParam.key}: ${ orderItemParam.value }</p>
</c:forEach>
</c:forEach>
但无论我尝试放入第一项= $ {},它都是空的。有趣的是,如果我只在JSP上执行`$ {orderItem0},它会打印出orderItem0的所有数据。但我希望能够遍历订单项列表,这就是我以这种方式构建数据的原因。有人可以帮我弄清楚如何访问这些订单商品的清单吗?