0

私は単純な JSF の例を作成しようとしており、いくつかのファイラーがあります。私は Maven を使用しており、META-INF flolder faces-confid.xml に保存しています。

実行しようとすると出力に表示されます:

Welcome to JSF. #{test.test}

しかし、それは別のものでなければならないと思います。

どうぞ:

ビーンファイル

import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;


@Named("test")
@RequestScoped
public class TestBean implements Serializable{
    private String test = "test";

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }    
}

XHTML ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Welcome</title>
    </h:head>
    <h:body>
        <h3>Welcome to JSF. #{test.test}</h3>
    </h:body>
</html>

WEB.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
   <servlet>
      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>/faces/*</url-pattern>
   </servlet-mapping>
   <welcome-file-list>
      <welcome-file>new.xhtml</welcome-file>
   </welcome-file-list>
   <context-param>
      <param-name>javax.faces.PROJECT_STAGE</param-name>
      <param-value>Development</param-value>
   </context-param>
</web-app>
4

2 に答える 2

4

JSF が Bean を見つけられなかった場合、 は表示されず#{test.test}、その EL 式の代わりに単に空の文字列が表示されます。EL 式が評価されていないことには別の原因があります。現在の HTTP リクエストが をまったく呼び出さなかったため、FacesServletすべての JSF 作業を実行できませんでした。FacesServletこれを呼び出すには、ブラウザのアドレス バーに表示されるリクエスト URL が、で定義されている の URL パターンと一致することを確認する必要がありますweb.xml

もう 1 つの証拠は、Web ブラウザで右クリックして[View Source]をクリックし、HTML ソースを見ることで見つけることができます。<h:xxx>これらすべてのタグがまったく解析されていないことに気付いたでしょう。そのFacesServlet仕事の責任者でもあります。

webapp が実行されhttp://example.com/context/ていて、Facelet ファイルがあるとします。/page.xhtmlその場合、の URL パターンに応じて次のシナリオがありますFacesServlet

  • の場合は*.jsf、 までに開く必要がありますhttp://example.com/context/page.jsf
  • の場合は*.faces、 までに開く必要がありますhttp://example.com/context/page.faces
  • の場合は/faces/*、 までに開く必要がありますhttp://example.com/context/faces/page.xhtml

別の方法は、単に の URL パターンにマップすることです*.xhtml。これにより、仮想 URL について心配する必要がなくなります。

以下も参照してください。

于 2013-01-25T16:00:23.493 に答える
0

faces-config.xml と web.xml を WEB-INF フォルダー内に保存する必要があります。xhtml ファイルは WebContent 内にある必要があります。

于 2013-01-25T16:01:17.893 に答える