ラベルの自動引継ぎ

以前は画面上でコンボ・ラジオ等を選択した場合、
値のみ保持されていたため、
次の確認画面等で選択した項目のラベルを表示する際には
少し面倒な作業が必要になっていたが、
最新のTeedaではラベルの保持もできるようになったらしい。

[hoge.html]

<input type="hidden" id="aaaItemsSave"/>
<select id="aaaItems">
	<option value="0">A</option>
</select>


[HogePage.java]

 private Integer aaa;   ←値
 private String aaaLabel;  ←ラベル

 aaaItems = new TreeMap<String, Integer>();
 aaaItems.put("AAAA", new Integer(1));
 aaaItems.put("BBBB", new Integer(2));
 aaaItems.put("CCCC", new Integer(3));

※前提条件として入力画面側にItemSaveが必要。

以上

コンボ・ラジオ用リストの改善

以前はselectタグに設定するリストは
List>の型にする必要があったが、
最新のTeeda(1.0.11)ではMapでできるようになったらしい。

[hoge.html]

<input type="hidden" id="aaaItemsSave"/>
<select id="aaaItems">
	<option value="0">A</option>
</select>

[HogePage.java(旧)]

 aaaItems = new ArrayList<Map>();
 Map<String, Object> map1 = new HashMap<String, Object>();
 map1.put("label", "AAAA");
 map1.put("value", new Integer(1));
 aaaItems.add(map1);
 Map<String, Object> map2 = new HashMap<String, Object>();
 map2.put("label", "BBBB");
 map2.put("value", new Integer(2));
 aaaItems.add(map2);
 Map<String, Object> map3 = new HashMap<String, Object>();
 map3.put("label", "CCCC");
 map3.put("value", new Integer(3));
 aaaItems.add(map3);

[HogePage.java(新)]

 aaaItems = new TreeMap<String, Integer>();
 aaaItems.put("AAAA", new Integer(1));
 aaaItems.put("BBBB", new Integer(2));
 aaaItems.put("CCCC", new Integer(3));

※リストの順番を保持したい場合はTreeMapを使用する。

以上

日記って消せないのかな・・

spanタグを出力しない

spanタグが入る事で、デザインが崩れる場合に
spanタグを出力しない様にするには以下の通り。

hoge.html

<td class="right"><span id="id" te:omittag="true">id</span></td>
<td><span id="name">name</span></td>

出力されるHTML

<td class="right">1234</td>        ←spanなし
<td><span id="name">山田太郎</span></td>  ←spanあり

以上

バックアップファイルのリストア

以前(pg_dumpで)バックアップしたファイルをリストアしようとしたが、
pgAdminIIIではリストア操作ができない(ファイルは指定できるがOKボタンが押せない)。
最初はバックアップとリストア時のバージョン(環境)の違いとも思ったが、
その場でpgAdminIIIからバックアップしたファイルですらリストアできなかったので
『なんじゃそりゃ』と嘆いていたところ、同じ問題挙げているWebPageを発見した。
LinuxからWindowsへのリストアについて -Linux版PostgreSQL7.Xからのバ- PostgreSQL | 教えて!goo

以下の対策方法を示す。

(1)コマンドプロンプトを開き、パスが通ってない場合は
 ../ポスグレインストールDir/binに移動する。

(2)対象のDatabaseにpsqlで接続する

>psql -U postgres -h localhost databaseName

(3)バックアップファイルを読み込む

databaseName=# \i C:/hoge/moge.backup

以上

ForEachのネスト更新

ネストしたForEachの更新が1.0.12でサポートされるようになった。
[TEEDA-386] ネストした forEach の更新をサポートしました. - The Seasar Foundation Issues (Deprecated)
現在アップされている、1.0.12-SNAPSHOTで確認してみた。

※getter/setter省略
【FooDto.java
public class FooDto implements Serializable {

 private static final long serialVersionUID = 1L;
 private Integer fooNo;
 private String aaa;
 private String bbb;
 private BooDto booItems;
}

【BooDto.java】
public class BooDto implements Serializable {

 private String ccc;
}

【ForeachArrayPage.java】
public class ForeachArrayPage {

 private FooDto fooItems;
 private BooDto booItems;

 private Integer fooNo;
 private String aaa;
 private String bbb;
 private String ccc;

 public String initialize() {
  List l = createItems();
  fooItems = new FooDto[l.size()];
  l.toArray(fooItems);

  return null;
 }

 protected List createItems() {
  List l = new ArrayList();
  FooDto f = new FooDto();
  f.setFooNo(new Integer(1));
  f.setAaa("aa1");
  f.setBbb("bb1");
  BooDto b = new BooDto[3];
  b[0].setCcc("cc1");
  b[1] = new BooDto();
  b[1].setCcc("cc2");
  b[2] = new BooDto();
  b[2].setCcc("cc3");
  f.setBooItems(b);
  l.add(f);
 }
}

【foreachArray.html】

<input type="hidden" id="fooItemsSave" />
<table id="foreachTable" border="1">
 <div id="fooItems">
  <tr>
   <td><span id="fooNo">100</span></td>
   <td><input type="text" id="aaa" /></td>
   <td><input type="text" id="bbb" /></td>
   <div id="booItems">
    <td><input type="text" id="ccc" /></td>
   </div>
 </div>
</table>

以上

include機能

include機能の設定方法は以下の通り。

header.html

<html>
<body>
  headerです。
</body>
</html>

footer.html

<html>
<body>
  footerです。
</body>
</html>

※読み込むhtmlは部分的なものではだめらしく、<html><body>等を記述する必要がある。

hogeList.html

<html>
<body>
  <te:include id="layoutHeader" te:src="/include/header.html"/>
  中身っす。
  <te:include id="layoutFooter" te:src="/include/footer.html"/>
</body>
</html>

※src属性は/view/からの相対パスで設定する。

今回はlayout機能は使用していないのだが、
基本的には/view/layout/layout.htmlがあれば、自動的にそのレイアウトが適用される。
またPageクラスにgetLayout()メソッドを追加して、nullで適用外、
"/aaa/bbb.html"で適用するレイアウトの変更も可能。

以上

Teeda 1.0.11

Teeda 1.0.11が(RCが取れて)リリースされたので、
早速導入したところ、エラーが発生した・・(TдT)

原因はValidatorUtilが1.0.11ではなくなっているから。
TargetCommandUtilで代用するらしいが、
その情報が見つけられなくてソースを調べたりして
しばし路頭に迷った・・。

以上