Wicket

Link.onClick static が消滅して欲しくない。それならば、、

Wicket8 でラムダによる AjaxButton.onSubmit static メソッドの登場と思いきや、8.0.0-M4 から M5 以降で消滅して AjaxFormSubmitBehavior を使うのを納得したが、Link の onClick static メソッドでのラムダも消滅してるのは、 非常に残念だ。 Ajax ではな…

AjaxFormSubmitBehavior があるから心配ない。

先月、Wicket-8.0.0-M4 から M5 まで更新された時、 AjaxButton.onSubmit staticメソッドの BiConsumer 使用が 削除されていて、ショックだったけど、Wicket 8.0.0-M4 から M5 で、AjaxButton.onSubmit が。。。 - Oboe吹きプログラマの黙示録 よーく調べる…

モーダルウィンドウ使用時の datepicker

Wicket のモーダルウィンドウ使用時に注意しなければならないのは、 呼び出し Page とモーダルウィンドウの Panel 両方で jQuery Datepicker を配置したときである。 モーダルウィンドウを起動したとき、モーダルウィンドウの中で Datepicker が効かなかった…

Wicket 8.0.0-M4 から M5 で、AjaxButton.onSubmit が。。。

Wicket 8 の機能として注目だったラムダの対応も、 8.0.0-M4 までは、 onSubmit(String id, SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit , SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onError) onSubmit(String id, SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)これらのメソッドが加わっていて喜ん</ajaxbutton,></ajaxbutton,></ajaxbutton,>…

Wicket8 の Tomcat 8 で Websocket に苦戦中

先日、Wicket 8 の websocket - Oboe吹きプログラマの黙示録 で書いたが、改めて取り掛かった。Wicket の native-Websocket を使おうと、Tomcat 8.0.43 で起動できない。 Websocket にそんなに魅力を感じてるわけでもなく別の手段を選ぶことが多いのだが。。…

Wicket ModalWindow full screen

Wicket ModalWindow full screen と言うと、ちょっと言い過ぎだけど、つまりブラウザで開いたページ表示一杯の 幅、高さで ModalWindow しかも caption なしの ModalWindow に見えない ModalWindow を出したくなった。昔、captionが無い~フレーム枠が存在し…

Wicket 8 FeedbackPanel サンプル

Wicket8 の AjaxButton onSubmit を使用して気がついたのだが、前の Wicket バージョンでは、onSubmit の中で任意に error(Serializable) を呼ぶと、onError が走るという認識だったけど、Wicket 8 でそう動かない。Validator を 仕掛けておいて、バリデーシ…

Wicket 8 で AJAX イベントビヘビアを Generic に

Wicket 8 で AJAX イベントビヘビアを oboe2uran.hatenablog.comと書いたものの、落ち着いてみれば、一般用に以下のとおり書けるし、その方がビヘビアを追加した先の コンポーネントを参照したビヘビアが書ける。。 import org.apache.wicket.Component; imp…

AJAXDownload ビヘビア、

Wicket8 が前提の話だが、ビヘビアをラムダで。。を考え出すと、次から次へと出てくる。。。 AJAX の振る舞いで動かすダウンロード、以前、 Wicket 6.x→7.x でファイルダウンロード時のファイル名の注意 - Oboe吹きプログラマの黙示録 この中で、public abst…

AjaxEventBehavior スクロール もラムダで。

Wicket8 ビヘビアもラムダの恩恵が沢山あるだろう。Wicket 7 で、SerializableConsumer が無かったおかげで例えば、AjaxEventBehavior で スクロールイベントの処理は 以下のようなクラスを用意して、 import org.apache.wicket.ajax.AjaxEventBehavior; imp…

Wicket7 の native Websocket を使う場合、jQuery UI 使用は注意。

Wicket7 の native Websocket を使うともう1つ、煩わしいことが見つかりました。Websocket 接続するページのHTMLの head タグの最後に、jQuery 設定として以下のように指定されてしまうのです。 <script type="text/javascript" src="./wicket/resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-1.12.4-ver-1489464145840.js"></script>

wicket nativeでURLパターンが /wicket/* でなければならない理由は

Wicket7 の native Websocket を使う時、web.xml に設定するWebSocketFilter の URLパターンが /wicket/* でなければならない 理由は、wicket-native-websocket-core-7.x-.jar の javascript = wicket-websocket-jquery.js で、Websocket 接続のURLプロ…

Wicket 7 native Websocket の制約?!

Wicket 7 で native Websocket を使ってサーバ PUSH に近いことをしようと作っていて、気持ち悪い制約に気が付いた。Wicket のサイト web.xml では、たいてい WebFilter として、org.apache.wicket.protocol.http.WebApplication 継承クラスのマッピングには…

Wicket 8 の AjaxButton 、Link など

Wicket 8 になるとこれまでよりもシリアライズ化された Consumer などによりラムダ記述は、 前に投稿した Wicket8 の LambdaModel - Oboe吹きプログラマの黙示録 の他に、AjaxButton 、FeedBackPanel 、Link なども簡潔に書けるようになってくる。AjaxButton…

Wicket 8 の websocket

2017年3月3日時点、Wicket 8.0.0-M4 の Websocket は、残念なことに、Tomcat8用の WebFilter が作られていない。wicket-native-websocket-tomcat/8.0.0-M3 は Central Repository にあっても wicket-native-websocket-tomcat/8.0.0-M4 は、まだ公開されて…

AttributeAppender とAttributeModifier lambda

Wicketの AttributeModifier と AttributeAppender は、よくよく考えたら、ラムダ式をあてはめられるんだった。 boolean isError; queue(new Label("name", itemname).add(new AttributeAppender("class", ()->isError ? "error" : "")));queue(new Label("n…

Wicket8 の LambdaModel

Wicket 8 になると待望のラムダ Model がある。PropertyModel を使って TextField に 自Pageクラスの変数を指定すると、どうしても new TextField<>("idname", new PropertyModel<>(this, "name"));のように書くことになり、"name" 変数名がタイプセーフでな…

ListView に配置した Formフィールド 受信

Wicket の ListView でリストの中に TextField やフォーム送信するものを配置することが時々ある。送信後、どうやって受け取るか以前はよく悩んでたもので、getRequestCycle().getRequest().getPostParameters() から取得する力技をよく 書いてたものだ。 そ…

Wicket scheduleRequestHandlerAfterCurrent 使用の書き方を見直す

Wicket の WebPage でファイルダウンロードさせる1つの方法である RequestCycle の scheduleRequestHandlerAfterCurrent を使用する時、そのまま以下のようなことを書いていた。。 getRequestCycle().scheduleRequestHandlerAfterCurrent(new ResourceStrea…

Wicket セッションに格納できる最大サイズ

Wicket のセッションに格納できるサイズのMaxを調べてみる。WebApplication のメソッドより、getStoreSettings() を WebApplication の中で実行する。 単位は、キロバイトか、MBで確認、double型で返ってくる。 double kilobyte = getStoreSettings().g…

Wicket ListView のイテレータ を無理やり Stream で処理してみる

Wicket の ListView が提供する itarator メソッドは、以下のような使い方もできる。無理やり、イテレータを Stream に変換して処理してみた。 final WebMarkupContainer listViewContainer = new WebMarkupContainer("listview_container"); listViewContai…

AjaxTabbedPanel 内に配置した入力フィールド値をタブ切り替え時に受け取る

Wicket の AjaxTabbedPanel を使った時に、タブの中に配置した入力フィールドの値をフォーム送信ボタンによる受信ではなく、 タブのクリック=タブ切り替えのタイミングで受け取る方法に悩んだ。org.apache.wicket.extensions.markup.html.tabs.TabbedPanel …

Reloading this page will cause modal window to disappear を回避

Wicket の モーダルウィンドウを閉じる時に、ページ遷移 setResponsePage を何も対処せずに実行すると、、 Reloading this page will cause modal window to disappear が発生してしまう。 これを回避するには、モーダルウィンドウを設置するページで初期処…

Wicket AjaxButton onSubmit の前に JavaScript を差し込む

Wicket の AjaxButton onSubmit の実行前に処理したいJavaScript がある場合、 わざわざ jQuery で $( ボタンセレクタ ) .click( function(){ ...} ); のソースを用意して JavaScriptHeaderItem.forReference で読み込ませる方法にするか、 生成したAjaxButt…

Wicket のタブで、フォーム入力を保持した切り替え

1年半くらい前、Wicket のTab ・・・org.apache.wicket.extensions.markup.html.tabs パッケージの一連のタブを使用する時のデザインを書いたことがある。 Wicket のタブページ作成作業 - Oboe吹きプログラマの黙示録 この時デザインの事しか書かなかった、…

methods on autocomplete prior to initial

Wicket モーダルウィンドウに Autocompleteや Datepicker を配置した時、選択の前にウィンドウを閉じた場合に残る Autocompete やカレンダー表示などが残ってしまう問題、 これを回避するために、、 $('div[class="w_caption"]').mouseover(function(){ $('i…

Wicket 7 で DateTimeFormatterがエラー

Java8 、 Wicket 7 で開発していたら、Page 生成で 以下のように、java.time.LocalDate を DateTimeFormatter でフォーマット化して表示しようとすると、 error delegating to writeObject : java.time.format.DateTimeFormatter org.apache.wicket.WicketRu…

Wiclet 6.x から change ビヘビアの捕捉名。。。

Wicket で、チェックボックスやプルダウンなど changeイベント捕捉した処理を AjaxFormComponentUpdatingBehavior で "onchange" をインスタンス生成文字列にしていた。 component .add(new AjaxFormComponentUpdatingBehavior("onchange"){ @Override prote…

Wicket Panel の中に配置した入力フィールド

Wicket の Panel を Form の中に配置してPanel内の入力フィールドを、 getRequestCycle() で入力値を受け取るときのキーは、 "PanelのWicket-ID" + ":" + "inputのWicket-ID" というキーになる。":" 区切りである。 Webmarkupコンテナの中に配置した場合は、…

ListView スクロールで追加

Wicket の基本かも知れないが、、、 ListView で、リストが追加された時に、すべてのリスト要素に対する populateItem が実行されないように、 追加分だけ実行させるには、 setReuseItems(true)を、ListView で実行する。 確認の為のコード、サンプル。 スク…

Wicket の IRequestParameters と Java8

Wicket でプログラムを書いていて、form送信結果を取得するのに、 getRequestCycle から、org.apache.wicket.request.IRequestParameters を取得して 抽出することはあまりやらないのだけど、 IRequestParameters#getParameterNames() で、受け取るパラメー…

IChoiceRenderer ラムダ化

Wicket7 の IChoiceRenderer で 選択したものを特定するのに getObject で 先日書いた実装するくらいなら、getObject は、default メソッドにして、 プルダウンとして表示する <option>タグbody を決定する IChoiceRenderer#getDisplayValue の方をラムダ式にしたく</option>…

Wicket7 の IChoiceRenderer

Wicket7 では、IChoiceRenderer の実装しなくてはならないメソッドが増えている! public T getObject(String id, IModel> choices) DropDownChoice で IChoiceRenderer を使う場合、getModelObject() で取ってくるものをこのメソッドを実装して返さなくては…

Java8 StreamでWicket ListViewセル結合

昨日書いた groupingBy の利用として、HTML-tableタグ rowspan結合をサンプルとして作ってみました。 keyでグルーピング可能な任意オブジェクトリストを受け取って最終目的は以下のような表を作ることです。 Wicket の ListView でこの表を作ります。 対象の…

AjaxButton でダウンロード実行

Wicket の AjaxButton でファイルダウンロードを実装しようと、ファイルダウンロードの方法自体に、いろんな方法があるだろうけど、、 IRequestHandler handler = new ResourceStreamRequestHandler(resource,downloadName); getRequestCycle().scheduleRequ…

AjaxFormComponentUpdatingBehavior を使う

Wicketで、イベントを処理するのに、よく使われるのが、 AjaxEventBehavior でも、フォームコンポーネントの要素、input 、 select タグの入力値までは取得できない。 入力値まで必要なら、 AjaxFormComponentUpdatingBehavior を使う。 DropDownChoice など…

ListView で AjaxSelfUpdatingTimerBehavior

定期的に表示更新するリストを作ろうと思って、 AjaxSelfUpdatingTimerBehavior を直接 ListView に付与してしまうと、以下のエラーになる。 This component is a repeater and cannot be repainted via ajax directly. Instead add its parent or another m…

checkbox のある ListView

チェックBOXが存在するリストの表示&制御は、業務系Webの開発でよくあるもので、 案件の都度、相当量の JavaScript とサーバサイドを作らなくてはならなくあまり汎用的なモデルが存在しない。 とは言え、やはり少しでも使いそうなパターンはモデルとして…

JSON を Wicket1.5 から出力

JSON データを Wikcet で出力するサンプル Google の GSON で書いてみた。 コンテンツタイプを、application/json と指定することになるようだ。 import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.request.handler.resource.Resou…