私はアプリケーションで Webflow 2.3.2 を使用しています。1 つのステップで、ユーザーはバインドされたモデル オブジェクトのリストに追加/削除できます (変更後に現在のステップに戻るだけです)。たとえば、私のオブジェクトは次のようになります。
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;
}