我在应用程序中使用 Webflow 2.3.2,并且在一个步骤中,用户可以从绑定模型对象的列表中添加/删除(修改后他们只需返回到当前步骤)。例如,我的对象可能如下所示:
public class MyInfo implements Serializable {
List<String> myList = new ArrayList<String>();
}
在 webflow 中执行“添加”是没有问题的,因为我只是将新对象粘贴在列表的末尾,但对于“删除”,我需要识别要删除的元素。我现在正在做的是使用“currentEvent”预定义的 EL 对象并获取我用要删除的记录的 ID 填充的原始事件“值”。我想知道是否有更优雅的方法可以做到这一点,因为这似乎需要很长的路要走。 任何人都可以提出更好的方法吗? 这是我现在正在做的事情的说明:
我的 JSP 文件(注意“删除”按钮):
<c:forEach items="${myInfo.myList}" var="listItem" varStatus="listItemStatus">
<c:set var="v" value="${listItemStatus.index}"/>
<div><form:input id="listItemValue_${v}" path="myInfo.myList[${v}]"/></div>
<div><button id="deleteItem_${v}" name="_eventId_deleteItem" type="submit" value="${v}">Delete This Item</button></div>
</c:forEach>
我的“flow.xml”文件:
<transition on="deleteItem" bind="false" validate="false">
<evaluate expression="flowService.deleteItem(flowScope.myInfo, currentEvent.attributes)" result="flowScope.myInfo" />
</transition>
我的事件处理程序:
public MyInfo deleteAccount(MyInfo myInfo, LocalAttributeMap currentEvent) {
myInfo.getMyList().remove(Integer.valueOf((String)(currentEvent.asMap().get("_eventId_deleteItem"))).intValue());
return myInfo;
}