JSF1.1で簡単な画面作成

感想おまちしてます!

とりあえずJSFが動くだけのものを作成。

スポンサーリンク

web.xml

Faces Servletに「/faces/*」をマッピング。「TOMCAT_HOME\webapps\apname\WEB-INF」下に配置する。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

<web-app>

<!-- JSF Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>

<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>

</web-app>

faces-config.xml

画面遷移はないので雛型のみ。web.xmlと同じく。「TOMCAT_HOME\webapps\apname\WEB-INF」下に配置する。

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>

</faces-config>

JSPファイル

input.jspというのを仮に作って、JSFのタグを記入する。「TOMCAT_HOME\webapps\apname」下に配置する。

input.jsp(バージョン1)

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<body>
<f:view>
<h2>hello</h2>
</f:view>
</body>
</html>

動作確認

以下のアドレスにアクセス。

http://localhost/apname/faces/input.jsp

helloと表示されればOK。

上のアドレスを見ると、通常は

http://localhost/apname/input.jsp

でアクセスしないといけないように思える。しかし、このアドレスでアクセスすると

javax.servlet.ServletException: Cannot find FacesContext

と怒られてしまう。どうもweb.xmlで設定したFaces Servlet Mappingを使わないとだめらしい。なので、「/faces」をはさんだアドレスじゃないといけない。

ということはデフォルトのページであるindex.jspにアクセスする場合も「/faces/index.jsp」となってしまう。できれば「/apname/」でアクセスしたい。こういう場合はindex.jspを以下のようにすればいい。

<jsp:forward page="faces/input.jsp" />

これによって「/apname/」で「/faces/input.jsp」にアクセスされるようになる。