Wicket

Throwable な Function から、Optional<LocalDate>を生成することでコードを短く

先日、Optional の filter を連結して使う - Oboe吹きプログラマの黙示録 で書いた例は、 DateFormat の日付の妥当性チェック setLenient(true=厳しくない)を行い、これが返却値なしの void メソッドであることから どうしてもあのようになってしまってい…

StatelessChecker を使う。

Serializable And Throwable Consumer - Oboe吹きプログラマの黙示録 を書いたので、忘れないように本当にステートレス Page として作ったのかチェックするのに 有効な方法を書いておく。Page クラスに、StatelessComponent アノテーションを付与して WebApp…

Serializable And Throwable Consumer

Wicket フォームイベント捕捉した時の処理は、シリアライズ化した関数型インターフェース github.com これのおかげで、Wicket 8から、AjaxFormSubmitBehavior の onSubmit でラムダ式を書けるようになった。 しかし、ラムダ式の中で例外捕捉の try~catchブ…

Wicket stateless なページ

Wicket の基本は、ステートフルである。それでもステートレスのページが必要なケースも要件によっては発生するのが Webアプリ開発の世界。Form → StatelessForm Link → StatelessLink か、 BookmarkablePageLink に置き換えるで済ませられれば良いが、Page …

Wicket が自動的に組み込む jQuery のバージョンを変更

Wicket が自動的に組み込む jQuery のバージョンを変更したい時は、 WebApplocation の init() メソッドで以下のように実行する。 getJavaScriptLibrarySettings() .setJQueryReference(new UrlResourceReference(Url.parse("js/jquery-2.1.4.min.js")));こ…

Model.orElseGet(SerializableSupplier<? extends T> other) は使えるかも

Wicket で、IModel インスタンスを書く時 、コーディングの癖で、 new 演算子による new Model<>() を書くことが多い。 Model.of があるのは知ってはいたけど、なぜかあまり書かなかった。https://issues.apache.org/jira/browse/WICKET-6412Model.orElse を…

DropDownChoice の IChoiceRenderer

2年近く前、Wicket6 → 7 になった時、DropDownChoice の為の IChoiceRenderer が、 public T getObject(String id, IModel> choices) が増えて、choices のgetModelObject() で取ってくるものをこのメソッドで返さなくてはならなくなり、 当時、以下のよう…

tar.gz のファイルをアップロードしたら、ブラウザにより ContentTypeが違う。

Wicket ファイルアップロード実行で、受信する FileUpload で取得する ContentType には、ブラウザによって違いがある。 tar.gz のファイルをアップロードした時、 chromeapplication/x-compressed edge と IE11application/x-gzip-compressed Wicket の Fil…

Wicket 作成した Panel の中のListView に置いた Form field の数

ページに、配置する Panel を作り、Panel の中に、ListView を配置して、 ListView で、フォームフィールドのコンポーネントを用意したときで、ListView の行数が可変の場合、 submit した時、行数を求めるのは、どうしたらいいか悩む。そこで、考えたのが、…

Tomcat 8.x + Wicket8 で WebSocket native

Tomcat 8.x + Wicket8 で WebSocket native がなかなかうまくできず苦労していたのだが、 やっと解った。。Tomcat 7.x + Wicket7 では、WebSocketFilter と WicketFilter を web.xml で2つ書いてURL による切り分けをしてたのですが、 Tomcat 8.x + Wick…

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 に苦戦中

2017-6-25 に回答oboe2uran.hatenablog.com 先日、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…