nigauri.me - ModelとPropertyModel









Search Preview

ModelとPropertyModel - ぼくにがうりくん。

nigauri.me
chromeだと「保護されていません」って出ちゃ&
.me > nigauri.me

SEO audit: Content analysis

Language Error! No language localisation is found.
Title ModelとPropertyModel - ぼくにがうりくん。
Text / HTML ratio 3 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud = public Model String text1 text2 formaddnew > sampleLabel private SampleEntity form Formform Form sampleText SamplePage Override class Java void
Keywords consistency
Keyword Content Title Description Headings
= 48
public 28
Model 24
String 20
text1 20
text2 20
Headings
H1 H2 H3 H4 H5 H6
1 3 5 5 0 0
Images We found 9 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
= 48 2.40 %
public 28 1.40 %
Model 24 1.20 %
String 20 1.00 %
text1 20 1.00 %
text2 20 1.00 %
formaddnew 20 1.00 %
> 20 1.00 %
sampleLabel 18 0.90 %
private 16 0.80 %
SampleEntity 12 0.60 %
form 12 0.60 %
Formform 12 0.60 %
Form 12 0.60 %
sampleText 12 0.60 %
SamplePage 12 0.60 %
Override 10 0.50 %
class 10 0.50 %
Java 10 0.50 %
void 8 0.40 %

SEO Keywords (Two Word)

Keyword Occurrence Density
= new 34 1.70 %
new Model 20 1.00 %
Formform new 12 0.60 %
new Formform 12 0.60 %
form = 12 0.60 %
Form form 12 0.60 %
private String 10 0.50 %
3 4 9 0.45 %
2 3 9 0.45 %
1 2 9 0.45 %
new PropertyModelentity 8 0.40 %
String text2 8 0.40 %
Override public 8 0.40 %
Model formaddnew 8 0.40 %
Button submitButton 6 0.30 %
SampleEntityunko moreta 6 0.30 %
submitButton = 6 0.30 %
new Buttonsubmit 6 0.30 %
Buttonsubmit new 6 0.30 %
public void 6 0.30 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
new Formform new 12 0.60 % No
= new Formform 12 0.60 % No
form = new 12 0.60 % No
Form form = 12 0.60 % No
Formform new Model 10 0.50 % No
2 3 4 9 0.45 % No
1 2 3 9 0.45 % No
new Model formaddnew 8 0.40 % No
SampleEntityunko moreta Form 6 0.30 % No
Buttonsubmit new Model 6 0.30 % No
Button submitButton = 6 0.30 % No
submitButton = new 6 0.30 % No
= new Buttonsubmit 6 0.30 % No
new Buttonsubmit new 6 0.30 % No
= new SampleEntityunko 6 0.30 % No
SampleEntity entity = 6 0.30 % No
entity = new 6 0.30 % No
new SampleEntityunko moreta 6 0.30 % No
moreta Form form 6 0.30 % No
Model Override public 6 0.30 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
= new Formform new 12 0.60 % No
Form form = new 12 0.60 % No
form = new Formform 12 0.60 % No
new Formform new Model 10 0.50 % No
1 2 3 4 9 0.45 % No
Buttonsubmit new Model Override 6 0.30 % No
new Model Override public 6 0.30 % No
Model Override public void 6 0.30 % No
Override public void onSubmit 6 0.30 % No
SamplePage extends WebPage private 6 0.30 % No
2 3 4 5 6 0.30 % No
3 4 5 6 6 0.30 % No
5 6 7 8 6 0.30 % No
Formform new Model addform 6 0.30 % No
new Buttonsubmit new Model 6 0.30 % No
sampleLabel Button submitButton = 6 0.30 % No
= new Buttonsubmit new 6 0.30 % No
submitButton = new Buttonsubmit 6 0.30 % No
sampleLabel public SamplePage super 6 0.30 % No
4 5 6 7 6 0.30 % No

Internal links in - nigauri.me

日記
日記 - ぼくにがうりくん。
技術情報
技術情報 - ぼくにがうりくん。
Java
Java - ぼくにがうりくん。
Play framework
Play framework - ぼくにがうりくん。
セットアップ~画面表示
セットアップ~画面表示 - ぼくにがうりくん。
ModelとPropertyModel
ModelとPropertyModel - ぼくにがうりくん。
フォームの入力項目
フォームの入力項目 - ぼくにがうりくん。
バリデーションとエラーメッセージ
バリデーションとエラーメッセージ - ぼくにがうりくん。
ページの継承
ページの継承 - ぼくにがうりくん。
データ出力時の書式指定
データ出力時の書式指定 - ぼくにがうりくん。
国際化
国際化 - ぼくにがうりくん。
ModalWindow
ModalWindow - ぼくにがうりくん。
EclipseLink
EclipseLink - ぼくにがうりくん。
セットアップ
セットアップ - ぼくにがうりくん。
検索処理
検索処理 - ぼくにがうりくん。
更新処理とロック処理
更新処理とロック処理 - ぼくにがうりくん。
Connectionの取得
Connectionの取得 - ぼくにがうりくん。
Android
Android - ぼくにがうりくん。
開発環境のインストール
開発環境のインストール - ぼくにがうりくん。
作成したアプリの公開
作成したアプリの公開 - ぼくにがうりくん。
高速エミュレータ Genymotion
高速エミュレータ Genymotion - ぼくにがうりくん。
無料版と有料版でソースを共有する
無料版と有料版でソースを共有する - ぼくにがうりくん。
JavaでSSH
JavaでSSH - ぼくにがうりくん。
JavaでSubversion
JavaでSubversion - ぼくにがうりくん。
WordPress
WordPress - ぼくにがうりくん。
プラグイン Page List Widget
プラグイン Page List Widget - ぼくにがうりくん。
プラグイン Insert Estimated Reading Time
プラグイン Insert Estimated Reading Time - ぼくにがうりくん。
自作プラグインをWordPressの公式ディレクトリに登録する
自作プラグインをWordPressの公式ディレクトリに登録する - ぼくにがうりくん。
WordPress カスタマイズメモ
WordPress カスタマイズメモ - ぼくにがうりくん。
WordPress 3.7 で検索結果の表示順を日付の降順にする
WordPress 3.7 で検索結果の表示順を日付の降順にする - ぼくにがうりくん。
ショートコードの作り方
ショートコードの作り方 - ぼくにがうりくん。
ソーシャルブックマークを追加する
ソーシャルブックマークを追加する - ぼくにがうりくん。
タグクラウドのカスタマイズ
タグクラウドのカスタマイズ - ぼくにがうりくん。
特定のプラグインの更新通知を非表示にする
特定のプラグインの更新通知を非表示にする - ぼくにがうりくん。
画像サイズの追加
画像サイズの追加 - ぼくにがうりくん。
アップロードできる拡張子を追加する
アップロードできる拡張子を追加する - ぼくにがうりくん。
functions.php を分割する
functions.php を分割する - ぼくにがうりくん。
仮想 robots.txt に記述を追加する
仮想 robots.txt に記述を追加する - ぼくにがうりくん。
メタ情報ウィジェットからいらない項目を削除する
メタ情報ウィジェットからいらない項目を削除する - ぼくにがうりくん。
管理バーのうちいらない項目を削除する
管理バーのうちいらない項目を削除する - ぼくにがうりくん。
管理画面用のCSSの追加
管理画面用のCSSの追加 - ぼくにがうりくん。
Jetpackの関連投稿のカスタマイズ
Jetpackの関連投稿のカスタマイズ - ぼくにがうりくん。
ページ分割時に全ページ分の目次を出力する(要TOC+)
ページ分割時に全ページ分の目次を出力する(要TOC+) - ぼくにがうりくん。
テーマ Basic カスタマイズメモ
テーマ Basic カスタマイズメモ - ぼくにがうりくん。
ビルダー&ショートコードメモ
ビルダー&ショートコードメモ - ぼくにがうりくん。
Hook Content
Hook Content - ぼくにがうりくん。
日付・時刻のフォーマットの変更
日付・時刻のフォーマットの変更 - ぼくにがうりくん。
ページネーション
ページネーション - ぼくにがうりくん。
lightbox
lightbox - ぼくにがうりくん。
固定ページの投稿日を表示
固定ページの投稿日を表示 - ぼくにがうりくん。
メインナビゲーションの修正
メインナビゲーションの修正 - ぼくにがうりくん。
アイキャッチ画像
アイキャッチ画像 - ぼくにがうりくん。
パンくずリストの置き場所
パンくずリストの置き場所 - ぼくにがうりくん。
コメント欄の投稿日時と時刻の間の「@」を消す
コメント欄の投稿日時と時刻の間の「@」を消す - ぼくにがうりくん。
日本語化ファイル置き場
WordPress 日本語化 ファイルいろいろ - ぼくにがうりくん。
今回行ったセキュリティ対策について
今回行ったセキュリティ対策について - ぼくにがうりくん。
使用しているプラグイン
使用しているプラグイン - ぼくにがうりくん。
WordPress インストールメモ
WordPress インストールメモ - ぼくにがうりくん。
Linux
Linux - ぼくにがうりくん。
ヘボいネットブックにxubuntuをインストールする
ヘボいネットブックにxubuntuをインストールする - ぼくにがうりくん。
ヘボいネットブックにLinux Mintをインストールする
ヘボいネットブックにLinux Mintをインストールする - ぼくにがうりくん。
ヘボいネットブックにLubuntuをインストールする
ヘボいネットブックにLubuntuをインストールする - ぼくにがうりくん。
LinuxにXAMPPをインストールする
LinuxにXAMPPをインストールする - ぼくにがうりくん。
Linuxでブロードバンドルータ構築メモ
Linuxでブロードバンドルータ構築メモ - ぼくにがうりくん。
Plone
Plone - ぼくにがうりくん。
インストール(Windows版)
インストール(Windows版) - ぼくにがうりくん。
雑多なTips群
雑多なTips群 - ぼくにがうりくん。
SimpleBlogの導入
SimpleBlogの導入 - ぼくにがうりくん。
3年くらいPloneを使って感じたことまとめ
3年くらいPloneを使って感じたことまとめ - ぼくにがうりくん。
その他
その他 - ぼくにがうりくん。
Surface Pro 3
Surface Pro 3 - ぼくにがうりくん。
Surface Pro 3 メモ
Surface Pro 3 メモ - ぼくにがうりくん。
Surface Pro 3 を一週間使って感じたことまとめ
Surface Pro 3 を一週間使って感じたことまとめ - ぼくにがうりくん。
Git
Git - ぼくにがうりくん。
WindowsからGitLabを使う
WindowsからGitLabを使う - ぼくにがうりくん。
無視ファイル(.gitignore)
無視ファイル(.gitignore) - ぼくにがうりくん。
SourceTree
SourceTree - ぼくにがうりくん。
Git + Eclipse (+ codebreak)
Git + Eclipse (+ codebreak) - ぼくにがうりくん。
SharePoint
SharePoint - ぼくにがうりくん。
C# からの操作
C# からの操作 - ぼくにがうりくん。
PowerShellからの操作
PowerShellからの操作 - ぼくにがうりくん。
JavaScript からの操作
JavaScript からの操作 - ぼくにがうりくん。
自作PowerShellスクリプトを実行する
自作PowerShellスクリプトを実行する - ぼくにがうりくん。
CAML 簡易メモ
CAML 簡易メモ - ぼくにがうりくん。
Windows上で複数のXAMPPを共存させる
Windows上で複数のXAMPPを共存させる - ぼくにがうりくん。
Tritonn インストールメモ
Tritonn インストールメモ - ぼくにがうりくん。
Markdown メモ
Markdown メモ - ぼくにがうりくん。
Trac メモ
Trac メモ - ぼくにがうりくん。
Windows バッチファイル メモ
Windows バッチファイル メモ - ぼくにがうりくん。
仮想ハードディスクでかんたんデュアルブート
仮想ハードディスクでかんたんデュアルブート - ぼくにがうりくん。
Chromeでフォントの設定を変えても効かない時の対応
Chromeでフォントの設定を変えても効かない時の対応 - ぼくにがうりくん。

Nigauri.me Spined HTML


ModelとPropertyModel - ぼくにがうりくん。 chromeだと「保護されていません」って出ちゃうんだよ。 ホーム 日記 技術情報 Java Play frameworkTriggermanWicket セットアップ~画面表示 ModelとPropertyModel フォームの入力項目 バリデーションとエラーメッセージ ページの継承 データ出力時の書式指定 国際化 ModalWindow EclipseLink セットアップ 検索処理 更新処理とロック処理 Connectionの取得 Android 開発環境のインストール 作成したアプリの公開 高速エミュレータ Genymotion 無料版と有料版でソースを共有する JavaでSSH JavaでSubversion Apache+Tomcat WordPress プラグイン Page List Widget プラグイン Insert Estimated Reading Time 自作プラグインをWordPressの公式ディレクトリに登録する WordPress カスタマイズメモ WordPress 3.7 で検索結果の表示順を日付の降順にする ショートコードの作り方 ソーシャルブックマークを追加する タグクラウドのカスタマイズ 特定のプラグインの更新通知を非表示にする 画像サイズの追加 アップロードできる拡張子を追加する functions.php を分割する 仮想 robots.txt に記述を追加する メタ情報ウィジェットからいらない項目を削除する 管理バーのうちいらない項目を削除する 管理画面用のCSSの追加 Jetpackの関連投稿のカスタマイズ ページ分割時に全ページ分の目次を出力する(要TOC+) テーマ Basic カスタマイズメモ ビルダー&ショートコードメモ Hook Content 日付・時刻のフォーマットの変更 ページネーション lightbox 固定ページの投稿日を表示 メインナビゲーションの修正 アイキャッチ画像 パンくずリストの置き場所 コメント欄の投稿日時と時刻の間の「@」を消す 日本語化ファイル置き場 今回行ったセキュリティ対策について 使用しているプラグイン WordPress インストールメモ Linux ヘボいネットブックにxubuntuをインストールする ヘボいネットブックにLinux Mintをインストールする ヘボいネットブックにLubuntuをインストールする LinuxにXAMPPをインストールする Linuxでブロードバンドルータ構築メモ Plone インストール(Windows版) 雑多なTips群 Apache+Plone SimpleBlogの導入 3年くらいPloneを使って感じたことまとめ その他 Surface Pro 3 Surface Pro 3 メモ Surface Pro 3 を一週間使って感じたことまとめ Outlook 2013 で困ったところのメモ Microsoft Edgeの検索エンジンをGoogleに変更する Git WindowsからGitLabを使う 無視ファイル(.gitignore) SourceTree Git + Eclipse (+ codebreak) SharePoint C# からの操作 PowerShellからの操作 JavaScript からの操作 自作PowerShellスクリプトを実行する CAML 簡易メモ Windows上で複数のXAMPPを共存させる Tritonn インストールメモ Markdown メモ Trac メモ Windows バッチファイル メモ 仮想ハードディスクでかんたんデュアルブート Google Chrome とりあえず始めるGoogle Chrome Extensions Chromeでフォントの設定を変えても効かない時の対応 Vivaldiブラウザー導入メモ Thunderbird メモ Memcached Subversion関連 テキストエディタ Atom 導入メモ 自宅サーバで独自ドメイン stone for Android 設定メモ ゲーム 闘姫伝承 ANGEL EYES 闘姫伝承基礎知識 今日から始める闘姫伝承 闘姫伝承最新事情 闘姫伝承豆知識 キャラ別攻略・ミステリアスパワー キャラ別攻略・マリー&キング キャラ別攻略・キリコ キャラ別攻略・レイカ キャラ別攻略・ライヤ キャラ別攻略・ハイウェイスター キャラ別攻略・リナ キャラ別攻略・ちび子 vs. 大天使様 闘姫伝承用語集 記事中の表記について デジタル・デビル物語 女神転生Ⅱ マップ 悪魔データ GOOD悪魔一覧 NEUTRAL悪魔一覧 EVIL悪魔一覧 唯一神データ 悪魔相性表 悪魔合体表 悪魔合体逆引きシミュレータ アイテム表 魔法一覧 簡易攻略ガイド パワープレイ カジノ 裏技、小ネタ ダークハーフメモ その他のゲーム 時空の旅人 情報ページ 正当な歴史 力の支配する歴史 お金が支配する歴史 愛の支配する歴史 食べ物の支配する歴史 大迷路 情報ページ 大迷路 LEVEL1 大迷路 LEVEL2 大迷路 LEVEL3 大迷路 LEVEL4 魔法のプリンセス ミンキーモモ リメンバードリーム 情報ページ もっともあぶない刑事 のあぶない情報ページ もっともあぶない攻略 もっともあぶない会話集 特救指令ソルブレイン 情報ページ ジャイラス 情報ページ EGYPT 情報ページ ひとこと小ネタ集 物置 自作LINEスタンプ・着せかえ Androidアプリ れびう君 Androidアプリ 打出の小槌 WordPress 日本語化 ファイルいろいろ TrueTypeフォント DDS2 TrueTypeフォント woodcut 首もげた リンク ごちゃ LINEスタンプを作った LINE着せかえも作った スズキ・ハスラー メモ GPSログ・ルート 相互変換メモ Runtastic ←→ Garmin Connect 相互変換メモ Runtastic → Runkeeper 移行メモ 角栓くん ホーム > 技術情報 > Java >TriggermanWicket > ModelとPropertyModel 2010/10/25 ModelとPropertyModel もくじ1 Modelとは1.1 簡単な例1.2 実際の表示2 PropertyModel2.1 簡単な例2.2 一覧形式で、複数レコードの修正を行う画面の例2.3 実際の表示3 CompoundPropertyModel Modelとは Wicketでは全てのコンポーネントはModelと紐付けることができる。WicketにおけるModelとはデータを入れたり出したりできる器のようなもの。要するに、画面とロジックでの値の受け渡しはModelを経由するということ。 簡単な例 SamplePage.java SamplePage.java Java public matriculation SamplePage extends WebPage { private Model sampleText; private Model sampleLabel; public SamplePage() { super(); Form form = new Form("form", new Model()); add(form); sampleText = new Model(); form.add(new TextField("sampletext", sampleText)); sampleLabel = new Model(); form.add(new Label("samplelabel", sampleLabel)); Button submitButton = new Button("submit", new Model()) { @Override public void onSubmit() { sampleLabel.setObject(sampleText.getObject()); } }; form.add(submitButton); } } 123456789101112131415161718192021222324 public matriculation SamplePage extends WebPage {  private Model sampleText;  private Model sampleLabel;   public SamplePage() {    super();    Form form = new Form("form", new Model());    add(form);     sampleText = new Model();    form.add(new TextField("sampletext", sampleText));     sampleLabel = new Model();    form.add(new Label("samplelabel", sampleLabel));     Button submitButton = new Button("submit", new Model()) {      @Override      public void onSubmit() {        sampleLabel.setObject(sampleText.getObject());      }    };    form.add(submitButton);  }} SamplePage.html SamplePage.html XHTML <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form wicket:id="form"> 前回入力値:<span wicket:id="samplelabel" /> <br /> <input type="text" wicket:id="sampletext" /> <input type="submit" wicket:id="submit" value="送信" /> </form> </body> </html> 12345678910111213141516171819 <?xml version="1.0" encoding="UTF-8"?><html  xmlns="http://www.w3.org/1999/xhtml"  xmlns:wicket="http://wicket.apache.org/">   <head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  </head>   <body>    <form wicket:id="form">      前回入力値:<span wicket:id="samplelabel" />      <br />      <input type="text" wicket:id="sampletext" />      <input type="submit" wicket:id="submit" value="送信" />    </form>  </body> </html> 実際の表示 初期表示↓編集↓送信後結果 入力値は、指定したIDに紐付くModelクラスに自動で設定される。またModelクラスにJava内で値を設定することで表示値を変えることもできる。 PropertyModel 基本的には上記のModelクラスで値のやり取りはできるが、入力箇所が多くなればなるほどこの方法だと面倒になる。 入力項目全てについてModelを作成するのがめんどくさい 入力項目をひとつのBeanにまとめてしまいたい 複数のレコードを修正できる一覧表形式の修正画面を作りたい 上記のような場合は、PropertyModelを使うと楽になる。 簡単な例 クラスの変更点は以下。htmlは変更無し。 SamplePage.java Java public matriculation SamplePage extends WebPage { private String sampleText; private String sampleLabel; public SamplePage() { super(); Form form = new Form("form", new Model()); add(form); form.add(new TextField("sampletext", new PropertyModel(this, "sampleText"))); form.add(new Label("samplelabel", new PropertyModel(this, "sampleLabel"))); Button submitButton = new Button("submit", new Model()) { @Override public void onSubmit() { sampleLabel = sampleText; } }; form.add(submitButton); } } 123456789101112131415161718192021222324 public matriculation SamplePage extends WebPage {  private String sampleText;  private String sampleLabel;   public SamplePage() {    super();    Form form = new Form("form", new Model());    add(form);     form.add(new TextField("sampletext",                           new PropertyModel(this, "sampleText")));     form.add(new Label("samplelabel",                       new PropertyModel(this, "sampleLabel")));     Button submitButton = new Button("submit", new Model()) {      @Override      public void onSubmit() {        sampleLabel = sampleText;      }    };    form.add(submitButton);  }} PropertyModel(Object, String)を使用すると、Object(今回は自分自身を指定)のうちStringに該当するフィールドを探し出し、そこに対してget/setを行ってくれるので、いちいちデータ保持用のModelを作成したり操作したりせずに済む。ちなみに、上記のようにgetter/setterメソッドが無くてもフィールドが存在すれば動いてくれるらしい…が、一応getter/setterメソッドは用意したほうがいいだろう。もちろん、フィールドを用意せずにダミーのgetter/setterを作り、そのメソッド名を指定することもできる。 一覧形式で、複数レコードの修正を行う画面の例 複数件のSampleEntityを画面に一覧表示し、画面でSampleEntityデータを修正できるという感じのサンプル。 クラスは以下。 SamplePage.java Java public matriculation SamplePage extends WebPage { private List<SampleEntity> sampleEntityList; private String sampleLabel; public SamplePage() { super(); // 表示用データを設定する(通常はDBから取得したデータなどを設定する) sampleEntityList = new ArrayList<SampleEntity>(); sampleEntityList.add(new SampleEntity("1", "sample")); sampleEntityList.add(new SampleEntity("2", "test")); sampleEntityList.add(new SampleEntity("3", "abc")); Form form = new Form("form", new Model()); add(form); // リスト表示用コンポーネント PageableListView list = new PageableListView("list", sampleEntityList, 5) { @Override protected void populateItem(ListItem item) { Object record = item.getModelObject(); item.add(new TextField("text1", new PropertyModel(record, "text1"))); item.add(new TextField("text2", new PropertyModel(record, "text2"))); } }; form.add(list); form.add( new Label("samplelabel", new PropertyModel(this, "sampleLabel"))); Button submitButton = new Button("submit", new Model()) { @Override public void onSubmit() { StringBuilder sb = new StringBuilder(); for (SampleEntity e : sampleEntityList) { sb.append(e.toString()).append(" , "); } sampleLabel = sb.toString(); } }; form.add(submitButton); } } matriculation SampleEntity { private String text1; private String text2; public SampleEntity(String text1, String text2) { this.text1 = text1; this.text2 = text2; } @Override public String toString() { return text1 + ":" + text2; } } 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 public matriculation SamplePage extends WebPage {  private List<SampleEntity> sampleEntityList;  private String sampleLabel;   public SamplePage() {    super();     // 表示用データを設定する(通常はDBから取得したデータなどを設定する)    sampleEntityList = new ArrayList<SampleEntity>();    sampleEntityList.add(new SampleEntity("1", "sample"));    sampleEntityList.add(new SampleEntity("2", "test"));    sampleEntityList.add(new SampleEntity("3", "abc"));     Form form = new Form("form", new Model());    add(form);     // リスト表示用コンポーネント    PageableListView list =      new PageableListView("list", sampleEntityList, 5) {       @Override      protected void populateItem(ListItem item) {        Object record = item.getModelObject();        item.add(new TextField("text1",            new PropertyModel(record, "text1")));        item.add(new TextField("text2",            new PropertyModel(record, "text2")));      }    };    form.add(list);     form.add( new Label("samplelabel",        new PropertyModel(this, "sampleLabel")));     Button submitButton = new Button("submit", new Model()) {      @Override      public void onSubmit() {        StringBuilder sb = new StringBuilder();        for (SampleEntity e : sampleEntityList) {          sb.append(e.toString()).append(" , ");        }        sampleLabel = sb.toString();      }    };    form.add(submitButton);  }} class SampleEntity {  private String text1;  private String text2;  public SampleEntity(String text1, String text2) {    this.text1 = text1;    this.text2 = text2;  }  @Override  public String toString() {    return text1 + ":" + text2;  }} HTMLは以下。 SamplePage.html XHTML <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form wicket:id="form"> 前回入力値:<span wicket:id="samplelabel" /> <input type="submit" wicket:id="submit" value="送信" /> <table border="1"> <thead> <tr> <th>text1</th> <th>text2</th> </tr> </thead> <tbody wicket:id="list"> <tr> <td><input type="text" wicket:id="text1" /></td> <td><input type="text" wicket:id="text2" /></td> </tr> </tbody> </table> </form> </body> </html> 123456789101112131415161718192021222324252627282930313233 <?xml version="1.0" encoding="UTF-8"?><html  xmlns="http://www.w3.org/1999/xhtml"  xmlns:wicket="http://wicket.apache.org/">   <head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  </head>   <body>    <form wicket:id="form">      前回入力値:<span wicket:id="samplelabel" />      <input type="submit" wicket:id="submit" value="送信" />       <table border="1">        <thead>          <tr>            <th>text1</th>            <th>text2</th>          </tr>        </thead>        <tbody wicket:id="list">          <tr>            <td><input type="text" wicket:id="text1" /></td>            <td><input type="text" wicket:id="text2" /></td>          </tr>        </tbody>      </table>     </form>  </body> </html> 実際の表示 初期表示↓編集↓送信後結果 そう考えると、普通のModelクラスを使う機会はかなり少ないかもしれない。 CompoundPropertyModel PropertyModelからさらに手抜きするためのクラスとして CompoundPropertyModel がある。 ModelやPropertyModelでは、コンポーネントをnewする度にモデルもnewしコンポーネントに追加していたが、CompoundPropertyModelを使用した場合コンポーネントにモデルを追加することすら省略できるようになる。 使い方は今までの2つとは若干異なっていて、「追加したいコンポーネントに」モデルを追加するという今までのやり方に対し、CompoundPropertyModelの場合は「追加される方のコンポーネントに」追加することになる。 具体的には、このようなクラスの中身を出力する処理をつくるとして SampleEntity.java Java matriculation SampleEntity { public String text1; public String text2; public SampleEntity(String text1, String text2) { this.text1 = text1; this.text2 = text2; } } 12345678 matriculation SampleEntity {  public String text1;  public String text2;  public SampleEntity(String text1, String text2) {    this.text1 = text1;    this.text2 = text2;  }} PropertyModelの場合はこのように書くところを Java SampleEntity entity = new SampleEntity("unko", "moreta"); Form form = new Form("form", new Model()); form.add(new Label("text1", new PropertyModel(entity, "text1"))); form.add(new Label("text2", new PropertyModel(entity, "text2"))); 1234 SampleEntity entity = new SampleEntity("unko", "moreta");Form form = new Form("form", new Model());form.add(new Label("text1", new PropertyModel(entity, "text1")));form.add(new Label("text2", new PropertyModel(entity, "text2"))); CompoundPropertyModelならこう書ける。 Java SampleEntity entity = new SampleEntity("unko", "moreta"); Form form = new Form("form", new CompoundPropertyModel(entity)); form.add(new Label("text1")); form.add(new Label("text2")); 1234 SampleEntity entity = new SampleEntity("unko", "moreta");Form form = new Form("form", new CompoundPropertyModel(entity));form.add(new Label("text1"));form.add(new Label("text2")); こうすると、Formに追加したCompoundPropertyModelのbeanから、Labelに設定したIDと同名のプロパティを表示するようになる。ただし、コンポーネントのIDとCompoundPropertyModelのbeanのプロパティを一致させなければならないという制約もある。つまり Java SampleEntity entity = new SampleEntity("unko", "moreta"); Form form = new Form("form", new Model()); form.add(new Label("name", new PropertyModel(entity, "text1"))); form.add(new Label("comment", new PropertyModel(entity, "text2"))); 1234 SampleEntity entity = new SampleEntity("unko", "moreta");Form form = new Form("form", new Model());form.add(new Label("name",    new PropertyModel(entity, "text1")));form.add(new Label("comment", new PropertyModel(entity, "text2"))); このようにLabelのIDとbeanのプロパティ名を別にしたい場合はPropertyModelを使おう。 TwitterFacebookGoogleBookmark続き印刷メールアドレスRSSPocketPinterestTumblrRedditLinkedInTelegramWhatsAppSkypeFeedly7 ナビゲーション技術情報 Java Play frameworkTriggermanWicket セットアップ~画面表示 ModelとPropertyModel フォームの入力項目 バリデーションとエラーメッセージ ページの継承 データ出力時の書式指定 国際化 ModalWindow EclipseLink Android JavaでSSH JavaでSubversion Apache+Tomcat WordPress Linux Plone その他 最近の日記 あそびもとちゃん2018/07/31夏だ一番!だらけ猫祭り2018/07/30ビアレッティ モキッシマ2018/07/29ザ・グッド・ファイト シーズン12018/07/01倉式珈琲店 珈琲専門店のかき氷カフェウィンナー2018/04/30 最近の記事 Vivaldiブラウザー導入メモ2018/03/30LINE着せかえも作った2018/02/07自作LINEスタンプ・着せかえ2018/01/26LINEスタンプを作った2018/01/19ページ分割時に全ページ分の目次を出力する(要TOC+)2017/12/14 Twitter – nigauri @nigauri からのツイート サイトマップ プライバシーポリシー お問い合わせ ↑ Copyright © 2000-2018 nigauri All rights reserved. メールで送信 お名前 メールアドレス キャンセル 投稿を送信できませんでした。メールアドレスを確認してください。 メール送信チェックに失敗しました。もう一度お試しください。 このブログではメールでの投稿共有はできません。