简单的JSF commandButton没有命中动作

时间:2011-07-26 02:31:43

标签: jsf

我有一个最简单的小JSF示例(带有GlassFish的JSF2),我无法弄清楚为什么命令按钮没有命中动作方法。这就是我所拥有的......当我点击按钮时,没有任何反应。

我做错了什么?

testForm.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:form>
        <h:messages />
        <p/>
        <h:inputText />
        <p/>
        <h:commandButton value="test1" action="#{testController.action1}" />
    </h:form>


</html>

faces-config.xml中

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

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

    <managed-bean>
        <managed-bean-name>testController</managed-bean-name>
        <managed-bean-class>com.app.controller.TestController</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

</faces-config>

TestController.java

package com.app.controller;

public class TestController {

    public String action1() {
        return "testPage2";
    }

}

2 个答案:

答案 0 :(得分:2)

尤里卡!从头开始重建Eclipse项目后,我意识到我做错了什么。 Apache MyFaces位于项目路径中,应用程序正在GlassFish上部署,GlassFish拥有自己的JSF实现。这两个JSF实现不希望在一起很好地发挥作用。

多么痛苦。而且,你知道,我之前曾犯过同样的错误。 Eclipse应警告您,或者应该在GlassFish日志或h:messages标记中报告一些错误。

答案 1 :(得分:-1)

1)对于JSF2.0,不需要在Facesconfig.xml中配置托管bean。

2)可以使用@managedban注释。

   package com.app.controller;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    @ManagedBean(name = "testController")
    @SessionScoped
    public class TestController {
        public String action1() {
            return "testPage2";
        }
/** Constructor, getters and setters*/
    }