我有一个最简单的小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";
}
}
答案 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*/
}