2006-10-05 [J]
[長年日記]
_[Nancle]NancleNankuruアイデアベース
public class Fuga { @ActionURL("/fuga/fuga") @Pages({@Page(status="bb", page="bb.jsp"), @Page(status="cc", page="cc.jsp")}) @ErrorPage("aa.jsp") public String fuga(FugaForm fugaForm){ return "bb"; } }
みたいに書くと、例えばブラウザからhttp://〜/fuga/fugaって入力すると、このfugaメソッドが呼び出される。
FugaFormの指定はあってもなくてもOK。リクエストパラメータからFugaFormのセッターメソッドのシグネチャとパラメータ名が一致するものをセッターメソッドを呼び出してFugaFormに*1設定する。
fugaメソッドの戻り値の結果で遷移先を指定可能。
メソッドより例外が帰った場合は@ErrorPageの内容へ遷移。
一通り実装はできた。テストを全然作ってないので、テストを充実させて一旦公開しようかな。
Strutsよりはお手軽に使えると思う。
バリデーション周りはさっぱりなのでこれから設計します。
_java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
Sysdeo Tomcatプラグインで開発用クラスローダをONにすると、こんなエラーになる。原因不明(T-T)(T-T)(T-T)(T-T)(T-T)(T-T)
つーか、Nankuru->Nancleってリファクタリングしてたらでるようになった。
なんとなく、今まではたまたま動いていて、動かなくなったのが正しい(?)っぽいけど、解消方法が分からん。
とりあえず、開発用クラスローダをOFFにすれば良いんだけど、いちいちJarに固めてWEB-INF/libに放り込まないと確認できないのは辛い。
なんとかならんかなぁ。
*1 FugaFormはセッターゲッターのみのクラス
2006-10-06 [J]
[長年日記]
_[Nancle]顧客登録のサンプル
を作ってみた。 Nancleは完全なPOJOベースなのでCustomerManagerみたいなクラスに顧客に関連する処理をまとめて記述することが可能。
それぞれのURLとメソッドの対応は@ActionURLアノテーションにて指定する。
public class CustomerManager { /** * 顧客登録初期画面の表示。 */ @ActionURL("/customer/input.do") @Pages({@Page(status="success", page="/mayaa/customer_input.html")}) public String input() { return "success"; } /** * 顧客登録確認画面の表示。 */ @ActionURL("/customer/confirm.do") @Pages({@Page(status="success", page="/mayaa/customer_confirm.html")}) @ErrorPage("/mayaa/customer_input.html") public String confirm(CustomerForm cf) { NancleContext.getRequest().setAttribute("customerForm", cf); return "success"; } /** * 顧客登録完了画面の表示。 */ @ActionURL("/customer/regist.do") @Pages({@Page(status="success", page="/mayaa/customer_regist.html")}) @ErrorPage("/mayaa/customer_input.html") public String regist(CustomerForm cf) { // DBに書き込んだりする処理 //... //... NancleContext.getRequest().setAttribute("customerForm", cf); return "success"; } }
バリデーションは思い切ってシンプルに画面の値を受け取るFormクラスにvalidateメソッドが存在する場合、それを呼び出すだけにした。あと、基本的なチェックメソッドを用意。
ここでエラーが発生した場合は、各メソッドで指定してある@ErrorPageで指定されたページに遷移する。
public class CustomerForm { private String firstName; private String lastName; private String telNo; private String address; private String eMail; public void validate() { Errors errors = NancleContext.getErrors(); if (Validates.required(lastName)) { errors.add("姓名-姓が未入力です。"); } if (Validates.required(firstName)) { errors.add("姓名-名が未入力です。"); } if (Validates.email(eMail)) { errors.add("メールアドレスが正しくありません。"); } } ...セッターゲッター ... ...
画面はmayaaで作ってみたのだけれど、エラーが発生した場合に入力画面に値を戻すために。
<input id="first_name" type="text" value="" />
<m:if m:id="last_name" test="${request.getAttribute("customerForm") != null}" > <m:echo m:id="last_name"> <m:attribute name="value" value="${customerForm.getLastName()}" /> </m:echo> </m:if>
みたいに書いてみたのだけれど、customerFormがrequestに存在しない場合うまく動かない。
customerFormの存在チェックがまずいみたい何だけど、回避策が分からないのでmayaaメーリングリストにて質問中。
うまくできたら、バージョン0.0.1として公開しようかなぁ。
2006-10-07 [J]
[長年日記]
_[Nancle]Nancle 0.0.1β
Nancle 0.0.1βを公開してみます。
Nancleとは、WebでMVCモデルを実現するためのPOJO+アノテーションベース、定義ファイルレスのフレームワークです。
動作環境はJDK5.0以上、Servlet/JSP Spec 2.4/2.0以上であれば動作すると思います。
まずは、顧客登録のサンプルを公開しますので、是非お試しください。
Nancleはまだβバージョンです。お試しいただき、色々なご意見をいただけると幸いです。
_[Nancle]Eclipseプロジェクト
NancleExampleのEclipseプロジェクトも公開しておきます。
Sysdeo Tomcatプラグインが必要です。
このプロジェクトをインポートするれば、Nancleを簡単に試すことができると思います。
2006-10-09 [J]
[長年日記]
_那覇祭り
夜は那覇祭りへ。
会場まで約30分かけて歩いていったので疲れた。
でも途中で潮が引いているときに止めたと思われる車が数十台水没仕掛けているのが見れたりして良かった。(w
那覇祭り最終日と言うことで、今日の花火は昨日、一昨日より盛大だった気がする。
祭り会場でオリオンビールを二杯飲んでご機嫌に帰ってきました。
2006-10-10 [J]
[長年日記]
_ITEPリファクタリングとデザインパターン
今日から2日間、ITEPの講座、リファクタリングとデザインパターンを受講してきます。
もうお前は受けなくて良いんじゃない?と言う声もちらほらありましたが。合法的に会社をさぼれるこんな機会を逃す訳がありません。(w
どんな人が講師で、どんなことを喋るのかもすごく興味あるしね。
_[Nancle]バリデータ
From ITEPの教室より(w
バリデータはこんな感じのインターフェイスでいこうかと。
@Validates public interface Validates { @Email("E-Mailアドレスのフォーマットが正しくありません。") @Require("E-Mailは入力必須です。") public String E_MAIL = "emai"; ... ... }
で、定数に指定されている文字列と同じものがRequestのパラメータに存在すれば、そいつをチェック対象とすると。
2006-10-11 [J]
[長年日記]
_リファクタリングとデザインパターン
2日目終了。と言うわけで感想。
リファクタリングはテストが大事と行っていたのに、テストは初日に少しJUnitの説明があっただけ。せっかくリファクタリングの演習やってるんだからJUnitも絡めれば良いのに。
あと、この講座の対象はJava初心者だと思われるのに、XPだのテストファーストだのと言った単語を入れるのはいかがなものかと。
演習はなんだかJavaの演習をやっている感じで退屈だった。あと、講師の人がリファクタリングはデバッグの延長と言っていたのが気になった。
総じて退屈な講習だったけど、理解の再確認という意味では良かったかも。改めて自分のすごさが分かった。(w
社内の内定者向けのJava講師をやることになりそうなんだけど、こっちに向けての収穫もあったし、受けて良かったかな。
2006-10-14 [J]
[長年日記]
_hikiのamazonプラグイン
画像が持ってこれなくなっていたので、tDiary-2.1.x系のamazonプラグインをhikiに移植。
とりあえず、untaintを至る所につけて上手く動いた。^^;
やったこと。
- tDiaryのmisc/plugin配下のamazon.rb、amazon、ja/amazon.rbをhikiのpluginフォルダへコピー。
- hikiconf.rbにて@secure=falseを設定
- 37行目のopen( url, :proxy => proxy ) {|f| f.read}をopen( url.untaint, :proxy => proxy ) {|f| f.read}に変更。
- 137行目のxml = File::read( "#{cache}/#{asin}.xml")をxml = File::read( "#{cache}/#{asin}.xml".untaint)に変更。
- 140行目のFile::open( "#{cache}/#{asin}.xml", 'wb') {|f| f.write( xml )}をFile::open( "#{cache}/#{asin}.xml".untaint, 'wb') {|f| f.write( xml )}に変更。
2006-10-16 [J]
[長年日記]
2006-10-17 [J]
[長年日記]
_0.3ミリのミニボールペン
本体も細いやつ。手帳用に欲しいんだけど、どっかにないかなぁ。
_マングース?
帰りの高速の南風原南あたりでマングースらしき生き物が高速を横切っていった。こんな所に野生のマングースなんているのね。
2006-10-18 [J]
[長年日記]
_仕事
ぼちぼち忙しくなってきた。
今、上海で作られたPGの品質向上やってるんだけど品質悪すぎ。
あそこまで細かい仕様書提示してこのできじゃぁねぇ。
こりゃしばらくは中国に仕事取られる事はないな。(w
2006-10-20 [J]
[長年日記]
_送別会
協力会社の人が介護系の学校に入り直すために会社を退社されるとのことで、その送別会がありました。
この業界からまったく異なる業界へ行くなんてすごく勇気のいることだと思います。頑張ってくださいね。
2006-10-25 [J]
[長年日記]
_[S2]Seasarを利用したwebアプリを2つデプロイした場合
webap1,webap2それぞれでSeasar2を利用したい場合、両方のweb.xmlにS2ContainerServletを書くと思うんだけど、片方のS2ContainerServlet(app.dicon)しか初期化されない。Singletonだからね。
しかもこの場合、container.getComponent("hoge")とかって文字列指定すると、Seasar2を経由してwebap2からwebap1のオブジェクトのインスタンスが取得できてしまう。クラスがロードできないからリフレクションもできないし、実害ないのかなぁ?
2006-10-28 [J]
[長年日記]
_Java Kuche役員会
昨日20時間ぐらい爆睡していたおかげか、体調も少し良くなってきたので、午後からJava Kuche役員会へ。
次回勉強会はXP祭りのチュートリアルみたいなことをやることに。面白そうだけど、参加者集まるかなぁ?
帰りにzu様に教えていただいた、一銀通りの安木屋へ。完全に希望通りのボールペンはなかったけど、ほぼ希望を満たすのがあったのでそれを購入。
で、この安木屋でフランクリンプランナーを発見!衝動買いしようかと思ったのですが、自分がいつも腰に下げているポーチ(?)に入らないので思いとどまりました。でも欲しいかも。持ち歩く手段を考えて買いだな。
2006-10-29 [J]
[長年日記]
_サンエー潮崎シティーしおざきシティ
公園でも行こうかと思っていたけど、天気が悪かったので出来たばかりのサンエー潮崎シティーに行ってみました。
思っていたよりずっと広くてお店も多い!これは暇つぶしには良いところかも。でも行くまでの道が混んでるんだよねぇ。早く海沿いの道出来ないかなぁ。
_ zu [トラックバックうまくいかないのでここに。 http://www.zukeran.org/shin/funifuni/..]
_ t-doi [>zu様 ご紹介ありがとうございます。手帳に挟んでも違和感がないよう、なるべく細いのを探してます。紹介してもらったや..]
_ t-doi [トラックバックも直しました。m(__)m]
_ zu [http://www.t-doi.org/とhttp://t-doi.org/が両方使えるんですね。こういうのはSE..]