wood burning stoves 2.0*
The moose likes JSF and the fly likes tr:commandButton actionListener not invoking managed bean method Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » JSF
Bookmark "tr:commandButton actionListener not invoking managed bean method" Watch "tr:commandButton actionListener not invoking managed bean method" New topic
Author

tr:commandButton actionListener not invoking managed bean method

Peter Townsend
Greenhorn

Joined: Nov 11, 2010
Posts: 1
I am new to MyFaces Trinidad component library and I am trying to do some pretty simple stuff. I am experiencing a problem with getting the tr:commandButton to actually invoke the managed bean's method. My setup is as follows:

- Ubuntu Linux 64-bit
- Sun JDK 1.6.0_20
- Tomcat 6.0.29
- Apache MyFaces JSF Core 1.2.9
- Apache MyFaces Trinidad 1.2.13
- Facelets 1.1.15
- Development IDE = Eclipse Helios

For testing I have made reduced the eventHandler method called by the Search Button do nothing but System.out.println("..."), to confirm if it is being called. It is not. Any ideas on what I am missing (something obvious, I am sure)?

Here is the xhtml file with the unresponsive commandButton:
--------------------------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<tr:document xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:tr="http://myfaces.apache.org/trinidad"
xmlns:trh="http://myfaces.apache.org/trinidad/html">

<trh:head title="Litens Automotive Group - Agile Drawing Search">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/stylesheet.css" rel="stylesheet" type="text/css" />
</trh:head>

<tr:form id="form1">

<tr:panelGroupLayout id="top" layout="horizontal" styleClass="greyBox">
<tr:panelGroupLayout id="left" layout="vertical" styleClass="subContainer">
<trutputText value="Agile Drawing Search" inlineStyle="font-weight: bold; margin-bottom: 10px"/>
<tr:spacer height="10"/>
<trutputText value="Enter Part Number:"/>
<tr:inputText id="searchString"
contentStyle="width: 200px"
maximumLength="20"
value="#{DrawingFetcherBean.searchString}" />
<tr:commandButton text="Search"
id="searchButton"
partialSubmit="true"
actionListener="#{DrawingFetcherBean.loadDrawingResultsEventHandler}" />
</tr:panelGroupLayout>
<tr:panelGroupLayout id="right" layout="vertical">
<h:graphicImage url="/cad_logo.jpg" alt="Logo" style="margin-right: 10px"/>
</tr:panelGroupLayout>
</tr:panelGroupLayout>

<tr:spacer height="30"/>

<tr:panelGroupLayout id="bottom" layout="vertical" class="greyBox" partialTriggers="searchButton">
<trutputText value="Search Results:" inlineStyle="font-weight: bold; margin-bottom: 10px"/>
<tr:table var="searchResults"
value="#{DrawingFetcherBean.drawingResults}"
columns="4" columnBandingInterval="1">
<tr:column headerText="Part Number" width="120px">
<trutputText value="#{searchResults.partNumber}"/>
</tr:column>
<tr:column headerText="Revision">
<trutputText value="#{searchResults.revision}"/>
</tr:column>
<tr:column headerText="Part Type" width="150px">
<trutputText value="#{searchResults.partType}"/>
</tr:column>
<tr:column headerText="File Name" width="100px">
<trutputText value="#{searchResults.fileName}"/>
</tr:column>
<tr:column headerText="_____">
<h:commandButton value="Get" action="Submit" />
</tr:column>
</tr:table>
</tr:panelGroupLayout>
</tr:form>
</tr:document>

--------------------------------------------------------------------------------------------------

Here is the managed bean snippet:

public class DrawingFetcher implements Serializable
{
String searchString;
String fileName;
...
...
public void loadDrawingResultsEventHandler(ActionEvent event)
{
System.out.println("Drawing Results loaded!");
}
}


Here is the web.xml:
--------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Test_Trinidad</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!-- FaceletViewHandler configuration -->
<context-param>
<param-name>org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER</param-name>
<param-value>org.apache.myfaces.trinidadinternal.facelets.TrinidadFaceletViewHandler</param-value>
</context-param>
<!-- Use documents saved as *.xhtml for Facelets -->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<description>
This parameter tells MyFaces if javascript code should be allowed in
the rendered HTML output.
If javascript is allowed, command_link anchors will have javascript code
that submits the corresponding form.
If javascript is not allowed, the state saving info and nested parameters
will be added as url parameters.
Default is 'true'</description>
<param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>
If true, rendered HTML code will be formatted, so that it is 'human-readable'
i.e. additional line separators and whitespace will be written, that do not
influence the HTML code.
Default is 'true'</description>
<param-name>org.apache.myfaces.PRETTY_HTML</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<description>
If true, a javascript function will be rendered that is able to restore the
former vertical scroll on every request. Convenient feature if you have pages
with long lists and you do not want the browser page to always jump to the top
if you trigger a link or button action that stays on the same page.
Default is 'false'
</description>
<param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
</web-app>

Here is the faces-config.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">
<managed-bean>
<managed-bean-name>DrawingFetcherBean</managed-bean-name>
<managed-bean-class>com.litens.agile.cad.DrawingFetcher</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<application>
<!-- Use the Trinidad RenderKit -->
<default-render-kit-id>org.apache.myfaces.trinidad.core</default-render-kit-id>
</application>
</faces-config>
 
GeeCON Prague 2014
 
subject: tr:commandButton actionListener not invoking managed bean method