Hello, JSF
   2 min read

はじめに

JSFを少し触ってみようと思ったのですが、もはやロストテクノロジーでどう始めるのかすらドキュメントを探すのが大変…

今回はかろうじてこちらを探し当てられました:

MojarraというのはWildFlyに組み込まれているJSF実装ですね。 今回はこちらを参考にしています。

また、上記ドキュメントからリンクされていたページにも説明がありました:

その他参考:

雛形作成

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

でMavenプロジェクト作成。

デフォルトだとJava1.7を用いる設定になっているので11に変更:

pom.xml
...
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>
...

src/main/webapp/WEB-INF/web.xml で指定されているServletのバージョンが2.3と古いので4.0に更新します。また、前述参考ページにある通り .xhtml 拡張子を FacesServlet で処理するようにします:

src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0">
  <servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
</web-app>

View, Model 実装

特に何も変わること無く 参考ページ にある通り src/main/java/com/example/Hello.java, src/main/webapp/hello.xhtml を作成。

ビルド&デプロイ

特に他のwarと変わりありません。

今回作成したソースをWildFlyにデプロイした場合、デフォルトだと次のURLへアクセスすれば参照できます: http://localhost:8080/jsf-sample/hello.xhtml