前回でプロジェクトの雛形を作成したので、実際に動くコードを書いてみます。
とりあえず簡単なページ遷移のみで
■xhtml
jspを使う方法などもあるようですが、今回はxhtmlを使います。
webappの直下に作成します。
<text1.xhtml>
最初に表示されるページです。
入力用のテキストボックスと、画面遷移用のボタンが表示されるだけ
<test2.xhtml>
遷移後の画面。
入力した内容が表示されます。
■JavaBean
今回はSpringと連携している為、@ManagedBeanは使いません。Springのアノテーションを使います。
今回は画面とのやり取りのBeanなので、@Controllerを使います。
applicationContext.xmlにて、controllerがどこに配置されるかをpackage指定しているので
アノテーションをつけておけば勝手にインジェクションしてくれます。
<TestAction.java>
これで完了。
あとは、サーバーを動かして以下のURLに接続すればページが表示されるはず。
※project名はjsftestとしています。
http://localhost:8080/jsftest/faces/test1.xhtml
実際に動かしてみたら、テキストボックスに入れた日本語が文字化ける・・・
要調査。
※追記
もう一回起動し直したら文字化け直った・・・
なんだったんだ・・・ブラウザ側の文字コードの解釈がおかしかっただけかも。
とりあえず簡単なページ遷移のみで
■xhtml
jspを使う方法などもあるようですが、今回はxhtmlを使います。
webappの直下に作成します。
<text1.xhtml>
最初に表示されるページです。
入力用のテキストボックスと、画面遷移用のボタンが表示されるだけ
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
</h:head>
<h:body>
<h1><h:outputText value="JSF2.2 + Spring3.2" /></h1>
<br />
<h:form>
<h:inputText id="name" value="#{testAction.name}" label="Name" />
<br />
<h:commandButton action="#{testAction.goTest2}" value="GO TO TEST2" />
</h:form>
</h:body>
</html>
<test2.xhtml>
遷移後の画面。
入力した内容が表示されます。
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
</h:head>
<h:body>
<h1><h:outputText value="Name" /></h1>
<h:outputText value="#{testAction.name}" />
<br />
</h:body>
</html>
■JavaBean
今回はSpringと連携している為、@ManagedBeanは使いません。Springのアノテーションを使います。
今回は画面とのやり取りのBeanなので、@Controllerを使います。
applicationContext.xmlにて、controllerがどこに配置されるかをpackage指定しているので
アノテーションをつけておけば勝手にインジェクションしてくれます。
<TestAction.java>
package hogehoge.controller;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
@Controller
@Scope("request")
public class TestAction {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String goTest2() {
System.out.println("name = " + name);
return "test2";
}
}
これで完了。
あとは、サーバーを動かして以下のURLに接続すればページが表示されるはず。
※project名はjsftestとしています。
http://localhost:8080/jsftest/faces/test1.xhtml
実際に動かしてみたら、テキストボックスに入れた日本語が文字化ける・・・
要調査。
※追記
もう一回起動し直したら文字化け直った・・・
なんだったんだ・・・ブラウザ側の文字コードの解釈がおかしかっただけかも。