2007年5月26日土曜日

[Teeda] ForEachでcheckboxを使うとエラー(解決)

ForEachでcheckboxを使うと、submit時に
TForEachで
23:36:45,062 DEBUG TeedaExtensionErrorPageManagerImpl#debug: 65 - 0
java.lang.ArrayIndexOutOfBoundsException: 0
at org.seasar.teeda.extension.component.TForEach.processUpdates(TForEach.java:382)
というエラーが出て、しばらく悩んだが解決。
原因はhtmlに
<input type="hidden" id="hogeItemsSave"/>
が無かったため。
submit時にはForEachで出力したオブジェクトデータも
一緒に送信しなければ、html出力時のオブジェクト配列(リスト)の
状態を復元できないので、当たり前だ。

2007年5月23日水曜日

[Oracle] 使用しているキャラクタエンコーディングの確認方法

以下のSQLを実行する。

SELECT NLS_CHARSET_NAME(NLS_CHARSET_ID('CHAR_CS')),
NLS_CHARSET_NAME(NLS_CHARSET_ID('NCHAR_CS')) FROM DUAL

2007年5月21日月曜日

[Teeda] SelectOneRadioにonclickイベントを設定するには

以下のように書く。
ラジオボタン毎のonclick属性にspanのonclickで書いた内容が設定される。

<span id="hoge" onclick="fuga();">
<input type="radio" name="hoge" value="1" checked="checked"/>hoge1
<input type="radio" name="hoge" value="2"/>hoge2
</span>

2007年5月10日木曜日

[Teeda] パラメタに固定値を渡す方法

Teedaではページにパラメタを渡す場合、

hoge

とできるが、上記のcd,editModeはページのcd,editModeプロパティに
置換して出力される。
editMode=2と固定値で出力するには、頭にfixed_を付加し、
hoge
とすればよい。

2007年4月28日土曜日

[Eclipse][Tomcat] Tomcatプラグイン

TomcatプラグインのEclipse3.2版が正式リリースされていた。

http://www.eclipsetotale.com/tomcatPlugin.html

2007年4月17日火曜日

BIRT PDF出力に失敗する

BIRT2.1.2でレポートのPDFプレビュー時に、Eclipseのツールバーより[View report as PDF]を選ぶと、
以下のエラーが発生する。

org.eclipse.birt.report.service.api.ReportServiceException: Report engine fails to create extension to handle this request.

http://www.eclipse.org/birt/phoenix/build/#itextによると、

BIRT 2.1.0 (or later)
The itext-1.3.jar file needs to be copied to the plugins/com.lowagie.itext_*/lib directory.

Birt 2.1.1 or Later Note:
* To Support Asian fonts in PDF, download the following jar and place it in the plugins/com.lowagie.itext_*/lib directory.
iTextAsian.jar.

と書いてある。
lib以下に、itext-1.3.jar, iTextAsian.jarをコピーしたら、正常に動作した。
おお、素晴らしい。

ここも参照。

2007年4月9日月曜日

Teeda メッセージ出力

ボタンのイベントハンドラ等でメッセージを出力する方法。

(1)メッセージリソースのIDを指定する方法
FacesContextUtils.addInfoMessage(String messageId, Object[] args);
FacesContextUtils.addErrorMessage(String messageId, Object[] args);
FacesContextUtils.addFatalMessage(String messageId, Object[] args);
FacesContextUtils.addWarnMessage(String messageId, Object[] args);

(2)任意の文字列を出力する方法
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(clientId, new FacesMessage(メッセージ文字列));

clientIdは

<form id="hogeForm">
<input type="text" id="hogeField"/>
</form>

の場合、"hogeForm:hogeField"となる。

メッセージの種類を設定するには
new FacesMessage(Severity severity, ~)
を使用する。
SeverityはFacesMessageに
public static final Severity SEVERITY_INFO = new Severity("INFO", 1);
public static final Severity SEVERITY_WARN = new Severity("WARN", 2);
public static final Severity SEVERITY_ERROR = new Severity("ERROR", 3);
public static final Severity SEVERITY_FATAL = new Severity("FATAL", 4);
として定義されている。

※メッセージリソースはデフォルトではappMessages(_ja).properitiesになる。

参考)
http://d.hatena.ne.jp/shot6/20070129

2007年4月5日木曜日

Java StringBuilder

StringBufferは同期化されている。
StringBufferと同一のAPIを持つ同期化されていないStringBuilderクラスがある。
JDK5.0から導入されていたようだ。知らなかったよ。

2007年4月1日日曜日

Teeda NULL_LABELメッセージ

セレクトのNullLabelメッセージを変更したい場合はappMessages.properties(日本語メッセージはappMessages_ja.properties)へ記述する。

例)
org.seasar.teeda.extension.component.TSelect.NULL_LABEL=選択してね!

なお、メッセージリソースのファイル名はfaces-config.xmlで定義されている。

Eclipse プロパティエディタ

native2asciiを自動で行ってくれるプロパティエディタ。

http://propedit.sourceforge.jp/

更新サイトはhttp://propedit.sourceforge.jp/eclipse/updates/

2007年3月31日土曜日

Teeda 遷移先のページ名

遷移先のページが他ディレクトリのページの場合(例は/hoge/fuga.htmlの場合))、

public String doHoge() {
return "hoge_fuga";
}

と書く。
パッケージの区切りにアンダースコアを使うのは美しくないなぁ。
本当は "hoge/fuga"と書きたい。
これはHTMLページ側の要素のid属性にはスラッシュが使えない事が理由なんだろうか?

ページクラス名を戻り値にすることができるので、まあ良いか。

import ~.hoge.FugaPage;

public Class doHoge() {
return FugaPage.class;
}

Teeda SAXParseException

Java Expert#01に掲載されていたTeedaの最初のサンプルhello.htmlを動かしたら、

[ESSR0054]SAXで例外が発生しました。理由はorg.xml.sax.SAXParseException: The entity "nbsp" was referenced, but not declared. at file:///view/hello/hello.html( lineNumber = 10, columnNumber = 12)

というエラーが表示された。「&nbsp;」でエラーが起きているようだ。
DOCTYPE宣言が無いと駄目らしい。
以下のようなコードで動くようになった。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello, World!</title>
</head>

<body>
こんにちは&nbsp;<span id="name">World!!!</span>
</body>

</html>

2007年3月30日金曜日

テスト

テストです。