Wicket

ブラウザへのファイルドロップ禁止する

JavaScript で抑制します。 window.addEventListener('dragover', function(ev){ ev.preventDefault(); }, false); window.addEventListener('drop', function(ev){ ev.preventDefault(); ev.stopPropagation(); }, false); これで、マウスでPCのローカル…

Wicket のファイルアップロード、じつはドラッグ操作に対応していた。

システム要件で意外とファイルアップロードの要件は少ないもので、今まで気づかなかったのですが、 ドラッグ操作でファイルアップロードする(処理)振る舞いを Wicket-extension は、すでにあったのですね。 wicket-extensions-8.0.0.jar の中にありますね…

リンクをクリックでシリアライズ化した Consumer ラムダを実行

Wicket の 簡単な記述で実現してみたくなりました。 Wicket 8 を使います。org.apache.wicket.markup.html.link.Link を継承したクラスで作ります。 どんな名称にしたら良いか悩みましたが、センス無いとは思いましたが、 もういっそのこと、そのまんま、 Cl…

Wicket の日付時刻入力フィールド

Wicket 日付時刻入力フィールドは、昔から wicket-extension に DateTextField があるが 今の時代の LocalDate , LocalDateTime には対応してなく、書式や手数も多く使いづらい。 Wicket 以外の DatePicker を使うことが多く、TextField<Strring> を使う方がバグも少</strring>…

Uncaught SyntaxError: Unexpected token Error

Wicket8 の Web を書いていてこれに遭遇。 Uncaught SyntaxError: Unexpected token < Webコンテキスト直下に js ディレクトリ、jquery-3.3.1.min.js を置いて 単純に、wicket:head タグで、 <wicket:head> <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script> </wicket:head> と書いただけなのに、、凄く悩んだ、 原因は、WebApplication …

Wicket8 の LambdaModel の setter の書き方

Wicket8 になって登場した LambdaModel IModel<T> LambdaModel.of(SerializableSupplier<T> getter, SerializableConsumer<T> setter Pageクラスに変数とsetter/getter を用意すればメソッド参照で、 queue(new TextField<String>("item", LambdaModel.of(this::getItem, this</string></t></t></t>…

Wicket DropDownChoice の「選んでください」を常に空白にする

Wicket 8 リリース以前の古い Wicket からそうであるが、Wicket の DropDownChoice は、 言語ロケールに沿って日本語であれば、「選んでください」が先頭に付いたプルダウンになる。 DropDownChoice 生成時のデフォルト Model Object を null にすれば WebAp…

簡単な認証済をチェックしたアクセス制限のページ

wicket-auth-roles を使った認証済をチェックするのは、@AuthorizeInstantiation で指定する役割 Role で制御して機能も Page だけでなく、 Panel やコンポーネントにも指定できて機能は優れている。 でも、そこまでの機能が不要で単純な 認証済をチェックし…

Wicket URLからページバージョン番号を除外する

Wicket のページは、そのまま使用するとステートフルでページセッションの番号が ブラウザのURLに付与されてしまう。 ?1 → 2回目の表示、 → ?2 昔からこの解決方法は以下 stackoverflow で示唆されてきているが、敢えてここに書くと。。 stackoverflow.c…

Wicket8 StatelessAjax*** は正式リリースには存在しない

Wicket 8.0.0 が出て気がついた。 Wicket-stuff にあった wicketstuff-stateless 8.0.0-M2 これは、Wicket 8.0.0 には入らなかった。。 stateless と statefull 両方混在するサイトを作る場合もあるので、 以下 StatelessAjaxFormSubmitBehavior StatelessAj…

ついに Wicket 8.0.0 リリース!!

ついにというか、ようやく出ました。 The Apache Software Foundation Announces Apache Wicket v8.0.0 https://t.co/aznUYJIaho #Apache #Wicket #OpenSource #component #oriented #Java #Web #Framework @apache_wicket — Apache - The ASF (@TheASF) May…

Wicket setResponsePage PageParameters URLにパラメータを載せない

Wicket 画面遷移を setResponsePage(Class , PageParameters) で行うとURLにパラメータがついてしまうのを避けるには、 ・遷移先の WebPage は、IRequestablePage を implement する。 ・遷移先の WebPageコンストラクタでPageParametersを受け取るようにし…

Chart.js で折れ線グラフの交点(intersect)をToolTip 表示(時刻編)

Chart.js で折れ線グラフの交点単純な X軸:double 値、Y軸:double 値 のパターンを先日書いたので、 今回は、X軸:時刻、Y軸:double 値 の線グラフの交点である。 プロットするデータの型は、先日書いた中の Ploter クラスである。x軸である x は、d…

Chart.js で折れ線グラフの交点(intersect)をToolTip 表示(double値編)

標準でありそうで存在しない。だから線を描画する2本の線、プロットする2点(X,Y座標値)を 2本線が交差するしないを Chart.js で描画するプロットリスト ~2つのリストの特殊な順列組合せで交点を見つけて描画する。対象グラフは前回投稿のようなグ…

jQuery ui datepicker の change イベントを Wicket で捕捉して処理する。

表題に挙げた Wicket で捕捉して処理する前に、そもそも jQuery ui Datepicker の change イベントは 通常の change イベントハンドラでは処理できず、オプション onSelect でハンドラ指定するのはマニュアルに書いてあるとおり有名である。 onSelect で指定…

jQuery AJAX通信でリクエストヘッダに動的に任意のコードを付与

jQuery AJAX通信でHTTPリクエストヘッダに任意のコードを付与するには、 headers{ }, を付ければ良いのだが、 折角なので、Wicket でページ表示のタイミング=Page コンストラクタ実行で付与する値を決めて 送るようにする。 ページが読込む JavaScript は、…

Maven 依存関係深い時の Jigsaw モジュール参照できないエラーを回避するには

Java9 で、module-info を書いて、Maven で解決できない時、 Maven 依存関係が深くなってしまった場合、pom.xml でネストして書いていなかったものを 書けばコンパイルが通る。 実際の現象、、、 最初、pom.xml を以下のように記述していた。。 <properties> <wicket.version>8.0.0-M8</wicket.version> <guice.verison>4.</guice.verison></properties>…

Wicket scheduleRequestHandlerAfterCurrent の実行を簡潔に

Wicket の RequestCycle の scheduleRequestHandlerAfterCurrent で IRequestHandler を指定して 応答としてファイル出力する方法は標準として昔から存在した。以下のように WebPage で書いていたものだ。 @Inject Logic logic; getRequestCycle().scheduleR…

Wicket ModalWindow の Autosize

Wicket の ModalWindow のサイズを任意に指定するには、ModalWindow #setInitialWidth #setInitialHeight でpixelサイズ指定するが自動でコンテンツのサイズ自動調整するには、 setAutoSize(true) を呼ぶことにになっている。 final ModalWindow window = ne…

wicket-guice 使用の見直し

だいぶ昔、6年も前、Wicket のバージョンが、1.5 に、wicket-guice の GuiceComponentInjector を JSR330 対応させる為に、自分で書き直したりしていた。 Wicket1.5.3 の guice - IOC で、Behaviorも対象に - Oboe吹きプログラマの黙示録そのまま同じコード…

Java9 Eclipse 必要な .class ファイルから間接的に参照されています のエラー

Java9 、Eclipse Oxygen Maven使用で、Wicket8 を使ったプロジェクトでコンパイルエラー以下が出る。 型 org.slf4j.Logger を解決できません。必要な .class ファイルから間接的に参照されていますwicket-core 8.0.0-M8 は、まだ sl4j-api 1.7.25 という ま…

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 した時、行数を求めるのは、どうしたらいいか悩む。そこで、考えたのが、…