谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

S2JSF

serializeConverterとか作ったら幸せになれね?

<input type="hidden" m:value="#{xxxDto.yyyList}" m:converter="#{serializeConverter}" /> みたいな書き方ができるConverter作れば、 Listをsessionに入れなくても、入力をListで受けるようにできないかなー? 超ジャストアイデアなので、何の検証もしてないけど。

間違ってバリデータ消しちゃった・・・。

あ”〜、しまった!! http://d.hatena.ne.jp/cero-t/20070726/1185468870 で書いたバリデータをこないだローカル環境で完成させたんだけど 別の問題対応している間に、間違ってプロジェクトごと削除しちゃったーー!! 俺あほやーーー(TT ちゃんとローカル構…

outjectionって分かりづらくね?

何って、Actionに作るgetterメソッドのことですよ。 Actionにgetterを作っておくと、S2Containerに管理されたり 管理対象じゃなければRequestスコープに入るわけですが。 S2JSFで最初に躓くのって、このoutjectionじゃないでしょうか。 outjectionにせず、re…

もうちょっとVerificationについて考えてみた。

S2JSFだったら、HTMLにValidationを書いて Dtoにアノテーションを書いてVerificationにすればOK。 でも、結局、両方に似たような事を書くことになるだろうから、 そのうち面倒くさくなってくるよね。(むら) 基本的にはVerificationの一部を切り出したもの…

新バリデータ、いちおう、動作しました。

なんて事を言いながら、 S2JSFの新バリデータ、"s:validator2"の実装を行なっちゃいました。 いきなりリリースするわけにもいかないので、 S2JSF 1.0.26のリリース後にSVNにコミットして、 しっかりテストも通してからリリースしようと思います。 さすがに、…

ValidationとVerification

こないだのドン引き最終回でもチラっと出た、これ。 ValidationとVerification。 言葉的には「妥当性の確認」と「検証」なんだけど、 ここでは「画面入力のチェック」と「サービスの引数チェック」って事にしておく。 図にするとこんな感じ。 Webアプリケー…

バリデータ、どっちが好き?

http://d.hatena.ne.jp/cero-t/20070704/1183568720 これを作り始めましたが、 ちょっと悩ましい所があったので、皆さんに聞いてみます。 どちらの方が好きでしょうか? A. 設定も含めて、全て<s:validator2>タグに書いてしまうタイプ。 <input type="text" id="year" m:label="年" m:value="#{xxxDto.year}" /> <input type="text" id="month" m:label="月" m:value="#{xxxDto.month}" /> </s:validator2>

アプリケーションアーキテクチャ その2

前回の直後に書くつもりだったんだけど・・・。 前のアーキテクチャだと、わざわざ「Converter」なんて JSFでやってくれているものを、実装してしまっています。 Strutsじゃあるまいし、なんで、こんなものを 導入する必要があるのでしょうか。 それは、一部…

アプリケーションアーキテクチャ

たまには整理。 ずっと、くーす風のアーキテクチャで作ってきたけど、 整理すると、こんな感じで良いんじゃないかなーって思ってる。 Action 画面と1:1 Requestスコープ Form サブアプリケーションに1つ 入力画面のFormと1:1 Sessionスコープ(実質的にはSub…

バリデータのアイデア

以前、 http://d.hatena.ne.jp/cero-t/20070622/1182530354 で書いてたバリデータを実現するためのアイデア。 こんな感じで記述します。 <input type="text" id="year" m:label="年" m:value="#{xxxDto.year}" /> <input type="text" id="month" m:label="月" m:value="#{xxxDto.month}" /> <input type="text" id="day" m:label="日" m:value="#{xxxDto.day}" />

コンポーネント化する単位

S2JSFを使いながら、頑張って複数フィールドバリデータを作ったり、 時には、複数フィールドコンバータみたいなものを作ろうとしたり、 そんな風にして、無理やり、複数フィールドの値をDTOに詰めてきました。 でもよくよく考えると、そうやって「複数○○」し…

複数フィールドバリデーションは、ラベルをバリデータが持った方が良い

最近、複数フィールドバリデーションを、実案件でモリモリ使っています。 具体的には、複数フィールドに分かれた「年」「月」「日」に対して 全部入力されなかったらスルー どれか入力したら、他が一つでも入力されていないエラー 全部入力されたら、存在す…

こんなEclipseプラグインを作っています

S2JSFのHTMLをテーブル形式で編集できるようにするための、プラグインです。 現在開発中ですが、こんな感じ。発端は、 「HTMLモックとUI仕様書さえ書けば、 S2JSFのHTMLとか、必要なソースとかが出来上がると嬉しいよね」 という思想から生まれた、Eclipseプ…

S2JSFでWebParts その17

「insertされたHTMLのinitAction実行」をコミットしました。 ちょっとコミッタ内で相談している点はありますが、 恐らく、次のバージョンから利用できるようになります。 また、insertを利用したサンプルも一緒に公開される予定です。 次の目標としては、 in…

複数フィールドバリデータをコミットしました。

サンプルも近いうちに作成します。 リリースされたら、使ってあげてください。

複数フィールドカレンダーバリデータ

おまけ。 複数のフィールドで、日付を入力したいとかって言う よくある 面倒な 要望に対応するためのバリデータ。 package examples.jsf.validator; import java.util.Calendar; import javax.faces.application.FacesMessage; import javax.faces.component…

複数サブミットバリューバリデータ

こちらは、あんまりみんな作ってないかも知れない。 複数フィールドのSubmittedValue段階の値を使うバリデータ。 上のものと比べると、 複数項目の「一番最後の項目」に仕掛けなくてもいい コンバータが通る前の値をバリデートする な感じになります。 断然…

複数フィールドバリデータ

みんな作ってると思うんだけど。 複数項目をまとめてチェックするバリデータ。 早い話が、S2ComparaValidatorの複数版。 targetId="xxx"じゃなくて、targetId="xxx,yyy,zzz"と複数選択できる。 例によって、 このバリデータを仕掛けた項目が入力されてないと…

m:immediate="true"のイベントで発生した例外をハンドリングすると、NullPointerExceptionが発生。

まぁ、とにかく、m:immediate="true"で呼ばれるActionメソッドは、 遷移するだけの、シンプルな形にしとけ! って話。 百聞は一見にしかず。 とりあえず、やり方から。 S2JSF Exampleを動かす。 errorpage/pageTran1.htmlのbuttonにm:immediate="true"属性を…

値の書き換えを防ぐValidator

hiddenタグの値を、JavaScriptとかリクエスト改ざんで 書き換えられた場合に、エラーを出力するバリデータ。確認画面のhiddenタグには、必ず埋め込まなきゃいかんでしょう。 package examples.jsf.validator; import javax.faces.component.StateHolder; imp…

実は理解していません、その3

ちなみに上のサンプルで、 searchメソッドの戻り値を「null」から「"employeeSearch"」にすると、 検索結果が全く表示されなくなります。 どちらにしようが、遷移先(=元の画面)は変わらないはずなのに、、、。 なぜ?

実は理解していません、その2

もう一つ、理解していない問題。 検索して、検索結果画面を表示した後に、一度画面遷移をしてから戻ってくると、 検索結果画面に、空っぽのテーブルが表示される問題。 なんて言っても、ちっとも伝わらないので、ファイルを用意しました。 (削除済み) S2JS…

実は理解していません、その1

S2JSFって、requestとsessionの動きさえ理解してれば 大体どんな問題も、説明つくじゃん? と思ってました。 実は、結構違いました。 まずは、m:rendered + m:actionの問題。 m:renedered=#{!empty xxx} の判定を行なう。 その判定で囲まれた場所にaタグを置…

S2JSFでWebParts その16

さて、リフレッシュしたことだし、 「insertで呼び出されたHTMLの、InitActionを実行する」の続き。 まず、やりたい事を整理すると、 親画面 子画面1 (m:inject="s:insert"タグで挿入。以下同様) 子画面2 子画面3 こんな構成の画面を作ったとして、 子画面の…

S2JSFでWebParts その15

script.aculo.us周辺のアレコレは、ちょっと置いといて、 「insertで呼び出されたHTMLの、InitActionを実行する」という処理を 正式にS2JSFへコミットするために、最後の調整。 何かって言うと、呼び出されたInitActionで、 例外が発生した 戻り値がnull以外…

テキストフィールドを空にしても、以前の値が再表示される

※WebPartsの新しいサンプルは、もうちょっと待っててね! 約束破ってごめんね!! さて、MLに投稿した問題を、自分でも調査中。 テキストフィールドの値を空にしてSUBMITすると、 m:required="true"のフィールドは、submittedValueが "" になる required属性…

S2JSFでWebParts その14

WebPartsのHTMLでは、同じレイアウト(m:extends)を使うことになるはず。 「閉じる」ボタンとか、「最大化」ボタンとかって、共通的なものだし。 そうすると、<span m:inject="s:insert" m:src="#{xxxList}"/> を使って読み込んだ時に、 insertされる側(Parts側)のページで、m:extends属性を解釈する必要</span>…

S2JSFでWebParts その13

S2JSF WebPartsの動かせるサンプルを公開します。 今回のサンプルで出来ること ドラッグ&ドロップで、パーツ(HTML)を動かすことが出来る 保存ボタンを押して、パーツの位置を(セッションに)保存できる もちろん、HTMLに書いてあるinitActionが呼び出される …

S2JSFでWebParts その12

どうやら、出来た模様。 m:srcに文字列を指定 → 今まで通り、srcで指定したファイルを読み込む m:srcにVB式で文字列を指定 → 解釈後の文字列を、srcとしてファイルを読み込む m:srcにVB式でCollection/配列を指定 → 解釈後の配列を、すべてsrcとしてファイル…

今日のちょい勉

寸暇を惜しんで、15分だけでもソースを読ム! 「Actionを実行すると、直後にgetterが呼ばれるけど、どうやってるの?」 今日、ちょっと即座には答えられなかったので、ソースを見てみる。 org.seasar.jsf.util.InvokeUtil#invokeが、該当箇所。 importVariab…