BIRTをアプリに組み込む。
http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php
2007年5月30日水曜日
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出力時のオブジェクト配列(リスト)の
状態を復元できないので、当たり前だ。
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
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>
ラジオボタン毎の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] パラメタに固定値を渡す方法
2007年4月28日土曜日
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をコピーしたら、正常に動作した。
おお、素晴らしい。
ここも参照。
以下のエラーが発生する。
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
(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から導入されていたようだ。知らなかったよ。
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で定義されている。
例)
org.seasar.teeda.extension.component.TSelect.NULL_LABEL=選択してね!
なお、メッセージリソースのファイル名はfaces-config.xmlで定義されている。
Eclipse プロパティエディタ
native2asciiを自動で行ってくれるプロパティエディタ。
http://propedit.sourceforge.jp/
更新サイトはhttp://propedit.sourceforge.jp/eclipse/updates/
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;
}
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)
というエラーが表示された。「 」でエラーが起きているようだ。
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>
こんにちは <span id="name">World!!!</span>
</body>
</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)
というエラーが表示された。「 」でエラーが起きているようだ。
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>
こんにちは <span id="name">World!!!</span>
</body>
</html>
2007年3月30日金曜日
登録:
投稿 (Atom)