srk
srk

Reputation: 5126

JSF action not triggered

I am trying to do a simple test before I dive into a large activity. But, here is where I was stuck. The test is to submit the JSF form, but the managed bean action never gets triggered.

<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>

Here is my managed bean

 public class User {

        public String send() {
            System.out.println("Submitting data.....");

            return null;

        }
        public void better() {
            System.out.println("In better...");

        }

    }

I have set all the configurations correctly. I could be able to see the page. But,the control never gets into action method. How come? Any suggestions would be great.

UPDATE: Here is my 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>

I have changed the managed-bean-name from User to user(small case) and changed the same in the .xhtml page as well, but seems to be same problem still.

Upvotes: 1

Views: 611

Answers (2)

kolossus
kolossus

Reputation: 20691

Support for an action method with a void return type did not show up in JSF until v2.x. You must specify a return type of at least Object for better

public Object better() {
    System.out.println("In better...");

    return null;
}

Upvotes: 1

Periklis Douvitsas
Periklis Douvitsas

Reputation: 2491

Try user instead of User.Thus, try put user.better instead of User.better. Are you using jsf 2 or no? Also, post your faces-config file

Upvotes: 3

Related Questions