goo blog サービス終了のお知らせ 

実験用ブログ

・勉強したことをメモしておく

【Struts】logic:iterate内のテキストボックスの値の設定と取得

2012-06-30 13:50:05 | 勉強

まず、以下のようなフォームを準備する。

----------------------------------------------------
public class SampleForm extends ValidatorForm {
private String sampleSingleValue;

private List<SampleBean> sampleList;

public List<SampleBean> getSampleList() {
return sampleList;
}

public void setSampleList(List<SampleBean> sampleList) {
this.sampleList = sampleList;
}

public String getSampleSingleValue() {
return sampleSingleValue;
}

public void setSampleSingleValue(String sampleSingleValue) {
this.sampleSingleValue = sampleSingleValue;
}
}
----------------------------------------------------


JSP側では通常、イテレータを使わない個所では、
以下の書き方でテキストボックスの値の設定と取得が可能。
(bean:defineを使わない方法もあるはずなので改善の余地あり)

----------------------------------------------------
<bean:define type="java.lang.String" id="singleValueId" name="SampleForm" property="sampleSingleValue" />
<input type="text" name="sampleSingleValue" value="<%=singleValueId%>"/>
----------------------------------------------------
↓その結果、以下のようなHTMLが出力される。
----------------------------------------------------
<input type="text" name="sampleSingleValue" value="defaultValue"/>
----------------------------------------------------


このような入力フィールドをイテレータで回す場合は、
以下のように記載することになる。

----------------------------------------------------
<logic:iterate id="data" name="SampleForm" property="sampleList" indexId="idx" >
<bean:define type="java.lang.String" id="roopValueId" name="data" property="beanValue" />
<html:text name="sampleList" property="beanInputValue" indexed="true" value="<%= roopValueId %>"/>
</logic:iterate>
----------------------------------------------------
↓その結果、以下のようなHTMLが出力される。
----------------------------------------------------
<input type="text" name="sampleList[0].beanInputValue" value="defaultValue0">
----------------------------------------------------


しかし、このままでは実行時に
javax.servlet.ServletException: BeanUtils.populate
というサーブレットエラーが発生してしまう。
これはstrutsの仕組みによるもの。

そこで、以下のようにForm内で初期化することで回避できる。
(Actionに初期化処理を記載しても本エラーは回避できない)

----------------------------------------------------
public class SampleForm extends ValidatorForm {

private static final int LIST_CNT_MAX = 10;

private List<SampleBean> _sampleList = new ArrayList<SampleBean>();

/**
* コンストラクタ.
*/
public SampleForm() {
super();
for (int i = 0; i < LIST_CNT_MAX; i++) {
_sampleList.add(new SampleBean());
}
}

public List<SampleBean> getSampleList() {
return _sampleList;
}

public void setSampleList(List<SampleBean> sampleList) {
_sampleList.clear();
_sampleList.addAll(sampleList);
}

// その他のフィールド・ゲッタ・セッタは同様のため省略
}
----------------------------------------------------

テキストボックス(inputタグ)でプレースホルダ設定

2012-06-29 00:09:17 | 勉強
<onfocus>
マウスカーソルの焦点(ピント)が合っている時に
特定の処理を与える為のイベントハンドラ

<onblur>
onfocus が外れた時に特定の処理を与える為のイベントハンドラ

--- サンプル ----
onfocus="if (this.value == 'ここに入力') this.value = '';
this.style.background = 'black;"
onblur="if (this.value == '') this.value = 'ここに入力';
this.style.background = 'silver';"
value="テキスト"
-----------------

参考URL:
http://hajimetedesign.blog77.fc2.com/blog-entry-33.html



Eclipse+djUnit単体試験メモ

2012-06-20 22:31:05 | 勉強
◆Eclipseの設定

①djUnitプラグインをインストール
 http://works.dgic.co.jp/djwiki/Viewpage.do?pid=@646A556E697420446F776E6C6F6164 jp.co.dgic.eclipse.jdt.djunit_3.5.x_0.8.5.zip

②プロジェクトを右クリックしてプロパティを開く
→ djUnitの「仮想モック・オブジェクト」タブを開く
→ 「仮想モック・オブジェクトを使用する」にチェックを入れる


◆テストケースの記載方法

①コメントは、後からUT項目として自動抽出できるよう、
 あらかじめ記載ルールを決めておくとよい

②テストケースで使用するメソッド
<値の判定>
・AssertEquals
・AssertNull
など

<メソッドの戻り値を指定>
・AddReturnValue
・AddReturnNull
・SetReturnValueAtAllTimes
など

<privateフィールドへのget/set>
・assertEquals("private: Hello, World", (String)PA.getValue(o, "privateHello"));
・PA.setValue(o, "privateHello", new_private);

<privateメソッドをテストする方法>
・Method m = PrivateClass.class.getDeclaredMethod("run");
・m.setAccessible(true);
・m.invoke(new PrivateClass(), null);

参考URL:
http://d.hatena.ne.jp/aqvi/20081208/1228742952