[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
テキストフィールドなどから値を取得するにはフォームを作成する。
フォームを作成しなくてもできるっぽいがそれはまた後日。
まずはフォームを作成。
XMLの名前+Formでフォームを作成する。
SubDispForm.java
package gui.test;
import org.seasar.uruma.annotation.ImportValue;
public class SubDispForm {
@ImportValue(id="title")
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
@ImportValueでXMLのidと等しいものから値を取得することができる。
ちなみに@ImportValueは取得のみ、@ExportValueはセットのみ、@ImportExportValueは両方が可能になる。
値を持ってくるだけだから型がText型じゃなくてString型なんだろうなぁ。
上のはprivateになっているがpublicでも可。
その場合にはセッターとゲッターは必要ありません。(自動的にセット、ゲットしてくれるらしい。)
続いてアクション
package gui.test;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.seasar.framework.container.annotation.tiger.Component;
import org.seasar.uruma.annotation.EventListener;
import org.seasar.uruma.annotation.Form;
@Component(name="subDispAction")
@Form(SubDispForm.class)
public class SubDispAction {
public Shell shell;
public SubDispForm subDispForm;
@EventListener(id="button")
public void dispTitleValue() {
MessageDialog.openInformation(shell, "TitleValue", subDispForm.getTitle());
}
}
@Formでどのフォームを使用するかを決定する。
2つ以上の記述は不可。
フォームとアクションは多:1の関係になる。
public SubDispForm subDispForm;でフォームを持ってきてsubDispForm.getTitle()でゲットできる。
フォームがpublic String titleの場合はsubDispFOrm.titleでゲットできる。
最後にapp.diconにアクションとフォームを設定する。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN"
"http://www.seasar.org/dtd/components23.dtd">
<components>
<component class="gui.test.MenuAction"/>
<component class="gui.test.SubDispAction"/>
<component class="gui.test.SubDispForm"/>
</components>
これで完成。