我想在进行大型活动之前做一个简单的测试。但是,这是我被困的地方。测试是提交JSF表单,但托管bean操作永远不会被触发。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<f:view>
<head>
<title>A B C</title>
</head>
<body>
<h:form id="test">
<h:inputText value="demo"/>
<h:commandButton type="submit" value="A button" action="#{User.better}" immediate="true" />
</h:form>
</body>
</f:view>
</html>
这是我的托管bean
public class User {
public String send() {
System.out.println("Submitting data.....");
return null;
}
public void better() {
System.out.println("In better...");
}
}
我已正确设置所有配置。我能够看到该页面。但是,控制永远不会进入行动方法。怎么会?任何建议都会很棒。
更新 这是我的faces-conig.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude" 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_1_2.xsd">
<application>
<view-handler>com.icesoft.faces.facelets.D2DFaceletViewHandler</view-handler>
</application>
<managed-bean>
<managed-bean-name>User</managed-bean-name>
<managed-bean-class>com.srk.beans.User</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
我已将托管bean名称从User更改为用户(小案例),并在.xhtml页面中也进行了相同更改,但似乎仍然是同样的问题。
答案 0 :(得分:3)
尝试用户而不是User.Thus,尝试使用user.better而不是User.better。你使用的是jsf 2还是没有?另外,发布你的faces-config文件
答案 1 :(得分:1)
在v2.x之前,对JSF中没有显示void
返回类型的操作方法的支持。您必须为Object
better
的返回类型
public Object better() {
System.out.println("In better...");
return null;
}