jsf bean无法正常工作

时间:2013-05-21 16:36:36

标签: jsf managed-bean

这是我的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。

1 个答案:

答案 0 :(得分:1)

因此,您将在浏览器中检索原始JSF源代码,而不是生成的HTML输出。浏览器显然不了解JSF代码(就像它不了解JSP / PHP / ASP / etc代码),但它只能理解HTML代码。这可能发生在FacesServlet尚未被调用时,它就是负责所有JSF工作的人。

也许您的FacesServlet基于某些教程或IDE自动生成的代码已映射到不同于*.xhtml的网址格式,例如*.jsf*.faces。在这种情况下,您有两个选择:

  1. 在浏览器的地址栏中修复请求网址,使其与该网址格式完全匹配。因此,假设它是*.jsf,则不要通过

    打开页面
    http://localhost:8080/context/index.xhtml
    

    ,而不是

    http://localhost:8080/context/index.jsf
    
  2. 将网址格式直接修改为*.xhtml。这在JSF 1.x中是不可能的,因为FacesServlet会在无限循环中调用自身,但这在JSF 2.x中很有可能并且很多书/教程/资源/ IDE没有'考虑到这一点。

    <url-pattern>*.xhtml</url-pattern>
    
  3. 另见: