aspose file tools
The moose likes JSF and the fly likes commandButton not able to invoke method Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


Win a copy of The Mikado Method this week in the Agile and other Processes forum!
JavaRanch » Java Forums » Java » JSF
Reply Bookmark "commandButton not able to invoke method" Watch "commandButton not able to invoke method" New topic
Author

commandButton not able to invoke method

naveen gupta
Ranch Hand

Joined: Apr 12, 2006
Posts: 129
Here are the details of my JSF

<h:commandButton id="create" type="submit" action="#{feedBack.create}" alt="#{bundle.buttonPost}" image="#{facesContext.externalContext.requestContextPath}/HTML-INF/images/buttons/post_button.gif"/>


here is my faces-config

<managed-bean>
<description>Feedback Bean</description>
<managed-bean-name>feedBack</managed-bean-name>
<managed-bean-class>com.vrx.web.bean.FeedBackRecordBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

and finally FeeBackRecordBean create method


public String create() {

log(Level.INFO, "FeedBackRecordBean create Begin");

sendEmail();

String response = "feedBack-success";

return response;
}

I don't know why the JSF is not able to invoke the create method
any kind of help would be appreciated
there is a log statement inside the create method
that log itself is not printing

please help
Rajeev Ravindran
Ranch Hand

Joined: Aug 27, 2002
Posts: 455
are you sure your command button is inside <h:form> tag ?

Thanks,
naveen gupta
Ranch Hand

Joined: Apr 12, 2006
Posts: 129
yeah, it is inside the form, i was wondering

do i need to specify as following in my JSP to call FeedBackRecordBean

<jsp:useBean id="feedBack" class="com.vrx.web.bean.FeedBackRecordBean" scope="request"/>
Rajeev Ravindran
Ranch Hand

Joined: Aug 27, 2002
Posts: 455
hmm, i never used jsp:usebean in my jsf page.. i faced this issue sometime back, and it got resolved when i kept the button inside form tag. Could you copy your jsp page here ? not the entire page, remove all the components except for the button. did you test it that that way ? maybe something else is messing up ..

thanks,
naveen gupta
Ranch Hand

Joined: Apr 12, 2006
Posts: 129
below is my JSF page, i had like 3 text boxes and this button, i just removed the text boxes for this post

i have also post my bean that is FeedBackRecordBean in more detail below this JSF. you can have a look at it. There are logs in my beans class
I was able to see log messages that are in constructor but not the logs that are in create method which is invoked in JSF


JSF

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>


<jsp:useBean id="feedBack" class="com.vrx.web.bean.FeedBackRecordBean" scope="session"/>

<f:loadBundle basename="bundles.commonForm" var="bundle" />

<f:view>
<table width="100%">
<h:form id="feedbackForm">

<td align="right">
<h:commandButton id="create" type="submit" action="#{feedBack.create}" alt="#{bundle.buttonPost}" image="#{facesContext.externalContext.requestContextPath}/HTML-INF/images/buttons/post_button.gif"/>
</td>


</h:form>
</table>
</f:view>



and my FeedBackRecordBean.java


package com.vrx.web.bean;

import java.io.Serializable;
import java.util.logging.Level;
import java.util.ResourceBundle;
import java.util.Date;
import java.util.List;

import com.vrx.commons.bo.feedback.FeedBackBusinessObject;
import com.vrx.commons.persistence.feedback.FeedBackBusinessObjectService;
import com.vrx.commons.logging.LogManager;
import com.vrx.commons.web.jsf.ICRUD;

import com.vrx.commons.email.MailSender;


public class FeedBackRecordBean implements Serializable, ICRUD
{

private FeedBackBusinessObject businessObject;


public FeedBackRecordBean()
{
LogManager.getPlatformLogger().log(Level.INFO, "FeedBackRecordBean Constructor");
this.reset();
}


public FeedBackRecordBean(FeedBackBusinessObject aBusinessObject)
{
this.businessObject = aBusinessObject;
}

public FeedBackBusinessObject getBusinessObject()
{
return businessObject;
}
public void setBusinessObject(FeedBackBusinessObject businessObject)
{
this.businessObject = businessObject;
}


public void reset()
{
LogManager.getPlatformLogger().log(Level.INFO, "reset method ");

this.businessObject = new FeedBackBusinessObject();
//this.businessObject.reset();
this.businessObject.setFeedbackDate(new Date(System.currentTimeMillis()));
this.businessObject.setName(" Naveen Gutta ");
this.businessObject.setDescription(" Enter your feedback here ");

}


public String toString()
{
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Bean: " + this.getBusinessObject().toString() + "\n");
return stringBuffer.toString();
}



public String create() {

LogManager.getPlatformLogger().log(Level.INFO, "FeedBackRecordBean create Begin");

sendEmail();


LogManager.getPlatformLogger().log(Level.INFO, this.businessObject.toString());

FeedBackBusinessObjectService.getInstance().create(this.getBusinessObject());

LogManager.getPlatformLogger().log(Level.INFO, "FeedBackRecordBean create End");

return null;
}



public void sendEmail()
{

LogManager.getPlatformLogger().log(Level.INFO, "FeedBackRecordBean sendEmail Begin");

ResourceBundle envBundle=ResourceBundle.getBundle("bundles.environment");
String smtpHost = envBundle.getString("mail.smtp.host");
String senderMailAddress = envBundle.getString("mail.smtp.senderMailAddress");
//String senderMailAddress = businessObject.getContactUsRecord().getEmailAddress().getFormattedString();
String customerServiceMailAddress = envBundle.getString("mail.smtp.allEmployeesMailAddress");

MailSender.getInstance(smtpHost).sendMessage(
customerServiceMailAddress,
senderMailAddress,
"Valeant Site Visitor: Feedback",
"\n\nSENDER INFORMATION"
+"\n Name: "+businessObject.getName()
+"\n Date: "+businessObject.getFeedbackDateString()
+"\n Description: "+businessObject.getDescription()
);

LogManager.getPlatformLogger().log(Level.INFO, "FeedBackRecordBean sendEmail End");
}


}
naveen gupta
Ranch Hand

Joined: Apr 12, 2006
Posts: 129
i see following messages in the log

com.vrx.web.bean.FeedBackRecordBean <init>
INFO: FeedBackRecordBean Constructor

com.vrx.web.bean.FeedBackRecordBean reset
INFO: reset method


To my understanding when it readds the faes-config.xml file, it will initialize the bean and displays the above messages in the log

In the front-end in the text fields i am able to see the default values set in the constructor
naveen gupta
Ranch Hand

Joined: Apr 12, 2006
Posts: 129
Look at below JSF code

<td align="right">
<h:commandButton id="create" type="submit" action="#{feedBack.create}" alt="#{bundle.buttonPost}" image="#{facesContext.externalContext.requestContextPath}/HTML-INF/images/buttons/post_button.gif"/>
</td>


what does {facesContext.externalContext.requestContextPath} do ?
naveen gupta
Ranch Hand

Joined: Apr 12, 2006
Posts: 129
i found solution myself

http://www.coderanch.com/t/211928/JSF/java/JSF-debugging
 
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to run our stuff on 16 servers instead of 3.
 
subject: commandButton not able to invoke method
 
Similar Threads
Passing data between beans
Weired Problem with JSF TLD on Tomcat
When leaving a page need to set a boolean to false no matter
Getting parameters in the backing bean/action listener
Help. commandButton does not invoke Bean's method.