データのバイト配列を持つactionscriptコンポーネントから呼び出されているjavascript関数があります。関数は正しく呼び出されており、受信しているデータを検証できます。
そのデータをウィケットに戻す必要がありますが、JavaScriptを使用してコンポーネントの値を設定し、onChangeイベントを発生させると、イベントは表示されますが、コンポーネントのモデルは更新されていません。例:
Javascript関数
<script type="text/javascript">
function f(obj) {
document.getElementById("byteArray").value = obj.byteArray;
document.getElementById("byteArray").onchange();
}
</script>
ウィケットの動作
final TextField field = new TextField("byteArray", Model.of(""));
field.add(new AjaxEventBehavior("onChange") {
@Override
protected void onEvent(AjaxRequestTarget target) {
String byteArray = getComponent().getDefaultModelObjectAsString());
// byteArray has not changed here
}
});
私はPropertyModelとIModelの実装を喜んで使用しようとしました。フォーム送信を使用してデータをWicketに戻すことができましたが、ページの更新が強制され、アプリケーションには適していません。Javascriptからプログラムで任意のタイプのAjaxFormSubmissionイベントを正常に発生させることができませんでした。
wicketAjaxGet / Postを使用してデータを送信しようとしましたが、バイト配列が大きすぎるために413エラーが発生します。
何か案は?