0

これは私のxhtmlです:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Keep alive</title>
    </h:head>
    <f:metadata>
        <f:viewParam name="value" id="value" value="#{myBean.val}" ></f:viewParam>
    </f:metadata>
    <h:body>

        Hello.<h:form><h:outputLabel value="#{myBean.val}"></h:outputLabel></h:form>
    </h:body>
</html>

そして、これは私の豆です:

 import javax.faces.bean.RequestScoped;
    import javax.faces.bean.ManagedBean;

        import javax.persistence.EntityManager;
        import javax.persistence.PersistenceContext;


        @RequestScoped
        @ManagedBean
        public class MyBean {


        @PersistenceContext(unitName = "myPUhere")
        private EntityManager em;
        /**
         * Creates a new instance of myBean
         */
        public MyBean() {
            System.out.println("mybeanload");
             if (getWaarde() == "yes") {
                System.out.println("IT WORKS!!");
            }

    }
    private String val;

    public String getVal() {
        System.out.println("getting value");
        return val;
    }



     public void setVal(String value) {
            System.out.println("setting value to " + value);
            this.val = value;
        }
}

私の Bean はこれに応答しません。何が表示されないのでしょうか? URL に入力した値も表示されず、outputLabel も表示されません。

4

1 に答える 1

1

したがって、生成された HTML 出力ではなく、生の JSF ソース コードをブラウザーで取得しています。ブラウザは明らかに JSF コードを理解していません (JSP/PHP/ASP/etc コードを理解していないように) が、HTML コードしか理解していません。これは、FacesServletが呼び出されていない場合に発生する可能性があります。つまり、すべての JSF 作業を担当している場合です。

おそらく、チュートリアルまたは IDE で自動生成されたコードに基づいており、やなどの とFacesServletは異なる URL パターンにマッピングされている可能性があります。その場合、次の 2 つのオプションがあります。*.xhtml*.jsf*.faces

  1. ブラウザのアドレス バーのリクエスト URL を修正して、その URL パターンと完全に一致するようにします。したがって、それが であると仮定して*.jsf、ページを開かないでください

    http://localhost:8080/context/index.xhtml
    

    しかし代わりに

    http://localhost:8080/context/index.jsf
    
  2. URL パターンを*.xhtml直接に修正します。これは、JSF 1.x では不可能でしたFacesServlet。そうしないと、無限ループで自分自身を呼び出してしまうからです。しかし、これは JSF 2.x ではかなり可能であり、多くの本/チュートリアル/リソース/IDE ではこれが考慮されていませんでした。 .

    <url-pattern>*.xhtml</url-pattern>
    

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

于 2013-05-21T16:50:59.260 に答える