同時編集をブロックする処理は、編集ボタンを押した際のwikiの最終更新時間と更新するボタンを押した時の最終更新時間を比較して異なる場合、エラーメッセージを出すようにしています。
編集ボタンを押した際にWikiFormDataのloadFormData内で以下のように更新時間をセッションに保存します。
ALEipUtils.setTemp(rundata, context, "update_date", wiki .getUpdateDate() .toString());
更新するボタンをおした時の処理は、まずWikiFormDataのinitでセッションから更新時間を取ってきて、以下のようにvalidate内で処理を行います。
if (update_date != null) { EipTWiki eipTWiki = WikiUtils.getEipTWiki(Integer.parseInt(entityId)); if (!update_date.equals(eipTWiki.getUpdateDate().toString())) { msgList.add(ALLocalizationUtils.getl10n("WIKI_CONFLICT_ERROR")); } }
メッセージリストに同時編集であるとエラーメッセージを入れることで、他のエラーの際と同様の方法で意図しない同時編集をブロックしています。