CannGuLoo.do CannGuLoo.do

2009年10月28日

Apache Wicket の開発手法を見て Java ラブなことを改めて思い知る(自分が)

rails1.2.xから2.x移行で脳内トラベラー
Jrailsのほうが自分向きに違いないあーでもないこーでもないと逃避言い訳モード全開寸前

そんな絶賛後ろ向きなモチベーションの中、こんな記事ハケーン

Javaで軽快に使える「軽量フレームワーク」特集〜Apache Wicketで簡単Webアプリ作成(1)
http://codezine.jp/article/detail/4459

ああああああああ
やっぱ自分は Java が好きなんだなぁ愛してるなぁ Java でまたしゃべりたいなぁ

---
参考






posted by cannguloo at 16:56| Comment(1) | TrackBack(0) | トピック:Java | このブログの読者になる | 更新情報をチェックする

2009年08月21日

[Struts Validator]漢字のみ、ひらがなのみ、カタカナのみの入力をチェックする拡張クラス

たぶんここらへん[NDO::Weblog]とかここらへん[module.jp]を参考にしたんだと思うんだけど・・・

1. 拡張クラスを作る



org.apache.struts.validator.FieldChecks を継承したクラスを作る。
private static final String P_HIRAGANA_ONLY のところは
java.util.regexの正規表現によるUnicodeブロックで定義されているものを使うと幸せ。

↓こんなんとか
\p{InHiragana} ひらがな
\p{InKatakana} カタカナ
\p{InHalfwidthAndFullwidthForms} 半角カタカナ
\p{InCJKUnifiedIdeographs} 漢字


package myClass.validator;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.ValidatorUtils;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.validator.FieldChecks;
import org.apache.struts.validator.Resources;

public class EnhancedFieldChecks extends FieldChecks {

private static final long serialVersionUID = 1L;
private static final String P_HIRAGANA_ONLY = "[\\p{InHiragana}]*";
private static final String P_KATAKANA_ONLY = "[\\p{InKatakana}]*";
private static final String P_KANJI_ONLY = "[\\p{InCJKUnifiedIdeographs}]*";

/**
* ひらがなで入力されているか
* @param bean
* @param validatorAction
* @param field
* @param errors
* @param validator
* @param request
* @return
*/
public static boolean validateHiragana(
Object bean,
ValidatorAction validatorAction,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request
) {

return isValidStatus(
bean, validatorAction, field, errors, validator, request, P_HIRAGANA_ONLY
);
}

/**
* カタカナで入力されているか
* @param bean
* @param validatorAction
* @param field
* @param errors
* @param validator
* @param request
* @return
*/
public static boolean validateKatakana(
Object bean,
ValidatorAction validatorAction,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request
) {

return isValidStatus(
bean, validatorAction, field, errors, validator, request, P_KATAKANA_ONLY
);
}

/**
* 漢字で入力されているか
* @param bean
* @param validatorAction
* @param field
* @param errors
* @param validator
* @param request
* @return
*/
public static boolean validateKanji(
Object bean,
ValidatorAction validatorAction,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request
) {

return isValidStatus(
bean, validatorAction, field, errors, validator, request, P_KANJI_ONLY
);
}

/*
* 共通Validate処理
*/
private static boolean isValidStatus(
Object bean,
ValidatorAction validatorAction,
Field field,
ActionMessages errors,
Validator validator,
HttpServletRequest request,
String pattern
) {
String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
boolean isMyPattern = isMyCharacter(value, pattern);
if (!isMyPattern){
errors.add(field.getKey(), Resources.getActionMessage(
validator, request, validatorAction, field));
}
return isMyPattern;
}

/*
* 共通チェック
*/
private static boolean isMyCharacter(String str, String pattern){
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(str);
return matcher.matches();
}
}



2. エラーメッセージを定義する



いわゆる「MessageResources.properties」に、今回追加で使用するエラーメッセージを定義しておく。
errors.katakanaとか。errors.hiraganaとか。

3. Validator-rules.xml へ定義する



WEB-INF下の指定したディレクトリに格納されている「Validator-rules.xml」に
「1」で作った拡張クラスの設定を定義する。


<validator name="hiragana"
classname="myClass.validator.EnhancedFieldChecks"
method="validateHiragana"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.hiragana"/>

<validator name="katakana"
classname="myClass.validator.EnhancedFieldChecks"
method="validateKatakana"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.katakana"/>

<validator name="kanji"
classname="myClass.validator.EnhancedFieldChecks"
method="validateKanji"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.kanji"/>


「msg=」に指定するのが、「2」で定義したエラーメッセージと。

4. Validation.xml で定義したルールを設定する


WEB-INF下の指定したディレクトリに格納されている「Validation.xml」では
使いたいフィールドの「depends」へ「3」で定義したname を指定してあげる。


(snip)
<form name="/orderSubmit">


<field
property="firstNameKana"
depends="required, maxlength, hiragana">
<arg0 key="offer.firstnamekana"/>
<arg1 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>30</var-value>
</var>
</field>
<field
property="lastNameKana"
depends="required, maxlength, hiragana">
<arg0 key="offer.lastnamekana"/>
<arg1 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>30</var-value>
</var>
</field>
(snip)
</form>

posted by cannguloo at 18:37| Comment(3) | TrackBack(0) | TIPS | このブログの読者になる | 更新情報をチェックする

2009年08月10日

エリオットな宮田さん

SQ週の今週は夏休みですかそうですか。
昼休みに日次レポを読みながら御飯を食べるのが日課(ここ3年ほど)なのになぁ。

最近夢の中で波動カウントしたり
ふりかけの代わりにごはんに0.382や0.618を掛けたりしがちです。
数字をカウントしてて5だったり8だったり13だったり21だったりするとなんか嬉しくなります。

宮田レポート・エリオット波動マーケット分析[www.sc.mufg.jp]
posted by cannguloo at 19:39| Comment(0) | TrackBack(0) | トピック:踊り場 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。