Apache Wicket アプリケーションで編集可能なテキストが必要です。テキストは、ユーザーがテキストをダブルクリックした後にのみ編集するなど、非常に「共通のテーブルのよう」に表示する必要があるため、通常の TextField を使用することは実際にはオプションではありません。
そこで、新しい HTML5 属性を使用することにしましたcontenteditable
。これは、全体的な仕事を非常にうまく行います。次のマークアップと Java コードを使用すると、静的テキストのように見えるラベルを取得できますが、ユーザーがテキスト内をクリックすると編集可能になります。
<div wicket:id="id" contenteditable></div>
...
item.add(new Label("id", "dummy content"));
しかし、新しいテキストをデータベースに保存する必要があるため、ユーザーが実際にテキストを編集したときに何らかのイベントをキャッチする必要があることは明らかです。オンライン マニュアルではoninput
、(タイミングの問題などに関して) よりも信頼性が高いと思われるためonkeyup
、などを使用することをお勧めしonkeydown
ます。
通常の HTML5 でイベントを試すと、問題なく動作します。
<div wicket:id="id" contenteditable oninput='alert("oninput");'></div>
私の質問は、Wicket ラベルをサポートするにはどうすればよいoninput
ですか? それをオーバーライドしてカスタム ラベルを作成することは、(本当に必要な場合) まったく問題のない解決策ですが、そのためには、Wicket に慣れていないため、どこから始めて正しいマークアップを作成するかなどを知ることができません。