S2JSF
<input type="hidden" m:value="#{xxxDto.yyyList}" m:converter="#{serializeConverter}" /> みたいな書き方ができるConverter作れば、 Listをsessionに入れなくても、入力をListで受けるようにできないかなー? 超ジャストアイデアなので、何の検証もしてないけど。
あ”〜、しまった!! http://d.hatena.ne.jp/cero-t/20070726/1185468870 で書いたバリデータをこないだローカル環境で完成させたんだけど 別の問題対応している間に、間違ってプロジェクトごと削除しちゃったーー!! 俺あほやーーー(TT ちゃんとローカル構…
何って、Actionに作るgetterメソッドのことですよ。 Actionにgetterを作っておくと、S2Containerに管理されたり 管理対象じゃなければRequestスコープに入るわけですが。 S2JSFで最初に躓くのって、このoutjectionじゃないでしょうか。 outjectionにせず、re…
S2JSFだったら、HTMLにValidationを書いて Dtoにアノテーションを書いてVerificationにすればOK。 でも、結局、両方に似たような事を書くことになるだろうから、 そのうち面倒くさくなってくるよね。(むら) 基本的にはVerificationの一部を切り出したもの…
なんて事を言いながら、 S2JSFの新バリデータ、"s:validator2"の実装を行なっちゃいました。 いきなりリリースするわけにもいかないので、 S2JSF 1.0.26のリリース後にSVNにコミットして、 しっかりテストも通してからリリースしようと思います。 さすがに、…
こないだのドン引き最終回でもチラっと出た、これ。 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>
前回の直後に書くつもりだったんだけど・・・。 前のアーキテクチャだと、わざわざ「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に詰めてきました。 でもよくよく考えると、そうやって「複数○○」し…
最近、複数フィールドバリデーションを、実案件でモリモリ使っています。 具体的には、複数フィールドに分かれた「年」「月」「日」に対して 全部入力されなかったらスルー どれか入力したら、他が一つでも入力されていないエラー 全部入力されたら、存在す…
S2JSFのHTMLをテーブル形式で編集できるようにするための、プラグインです。 現在開発中ですが、こんな感じ。発端は、 「HTMLモックとUI仕様書さえ書けば、 S2JSFのHTMLとか、必要なソースとかが出来上がると嬉しいよね」 という思想から生まれた、Eclipseプ…
「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"で呼ばれるActionメソッドは、 遷移するだけの、シンプルな形にしとけ! って話。 百聞は一見にしかず。 とりあえず、やり方から。 S2JSF Exampleを動かす。 errorpage/pageTran1.htmlのbuttonにm:immediate="true"属性を…
hiddenタグの値を、JavaScriptとかリクエスト改ざんで 書き換えられた場合に、エラーを出力するバリデータ。確認画面のhiddenタグには、必ず埋め込まなきゃいかんでしょう。 package examples.jsf.validator; import javax.faces.component.StateHolder; imp…
ちなみに上のサンプルで、 searchメソッドの戻り値を「null」から「"employeeSearch"」にすると、 検索結果が全く表示されなくなります。 どちらにしようが、遷移先(=元の画面)は変わらないはずなのに、、、。 なぜ?
もう一つ、理解していない問題。 検索して、検索結果画面を表示した後に、一度画面遷移をしてから戻ってくると、 検索結果画面に、空っぽのテーブルが表示される問題。 なんて言っても、ちっとも伝わらないので、ファイルを用意しました。 (削除済み) S2JS…
S2JSFって、requestとsessionの動きさえ理解してれば 大体どんな問題も、説明つくじゃん? と思ってました。 実は、結構違いました。 まずは、m:rendered + m:actionの問題。 m:renedered=#{!empty xxx} の判定を行なう。 その判定で囲まれた場所にaタグを置…
さて、リフレッシュしたことだし、 「insertで呼び出されたHTMLの、InitActionを実行する」の続き。 まず、やりたい事を整理すると、 親画面 子画面1 (m:inject="s:insert"タグで挿入。以下同様) 子画面2 子画面3 こんな構成の画面を作ったとして、 子画面の…
script.aculo.us周辺のアレコレは、ちょっと置いといて、 「insertで呼び出されたHTMLの、InitActionを実行する」という処理を 正式にS2JSFへコミットするために、最後の調整。 何かって言うと、呼び出されたInitActionで、 例外が発生した 戻り値がnull以外…
※WebPartsの新しいサンプルは、もうちょっと待っててね! 約束破ってごめんね!! さて、MLに投稿した問題を、自分でも調査中。 テキストフィールドの値を空にしてSUBMITすると、 m:required="true"のフィールドは、submittedValueが "" になる required属性…
WebPartsのHTMLでは、同じレイアウト(m:extends)を使うことになるはず。 「閉じる」ボタンとか、「最大化」ボタンとかって、共通的なものだし。 そうすると、<span m:inject="s:insert" m:src="#{xxxList}"/> を使って読み込んだ時に、 insertされる側(Parts側)のページで、m:extends属性を解釈する必要</span>…
S2JSF WebPartsの動かせるサンプルを公開します。 今回のサンプルで出来ること ドラッグ&ドロップで、パーツ(HTML)を動かすことが出来る 保存ボタンを押して、パーツの位置を(セッションに)保存できる もちろん、HTMLに書いてあるinitActionが呼び出される …
どうやら、出来た模様。 m:srcに文字列を指定 → 今まで通り、srcで指定したファイルを読み込む m:srcにVB式で文字列を指定 → 解釈後の文字列を、srcとしてファイルを読み込む m:srcにVB式でCollection/配列を指定 → 解釈後の配列を、すべてsrcとしてファイル…
寸暇を惜しんで、15分だけでもソースを読ム! 「Actionを実行すると、直後にgetterが呼ばれるけど、どうやってるの?」 今日、ちょっと即座には答えられなかったので、ソースを見てみる。 org.seasar.jsf.util.InvokeUtil#invokeが、該当箇所。 importVariab…