No action will be executed in Myfaces
Hi folks
actually I started programming webapplication using MyFaces with the
tomahawk extention. The website will be displayed the way I want it
except that after any for the test "com.sun.faces.saveStateFieldMarker"
will be generated.
But the action and the actionlistener are not called as I can validate
by viewing the log of the application.
Now here is the complete code of the sample application.
Hopefully anyone has an idea
marsud
WEB.xml
=======
<web-app>
<display-name>my-Webapplication</display-name>
<description>Test Application</description>
<!-- Listener, that does all the startup work (configuration,
init). -->
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</li=
stener-class>
</listener>
<!-- filtersettings for MyFacesExtentions -->
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-cla=
ss>
<!--
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>5m</param-value>
<description>Set the size limit for uploaded files.
Format: 10 - 10 bytes
10k - 10 KB
10m - 10 MB
1g - 1 GB</description>
</init-param>
<init-param>
<param-name>uploadThresholdSize</param-name>
<param-value>100k</param-value>
<description>Set the threshold size - files
below this limit are stored in memory, files above
this limit are stored on disk.
Format: 10 - 10 bytes
10k - 10 KB
10m - 10 MB
1g - 1 GB
</description>
</init-param>
-->
<init-param>
<description>
Defines the size until the selected File is keeped in
memory. Files bigger than the specified
value are hold in a temporary File on Disk.
</description>
<param-name>uploadThresholdSize</param-name>
<param-value>100k</param-value>
</init-param>
</filter>
<!-- extension mapping for adding <script/>, <link/>, and other
resource tags to JSF-pages -->
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<servlet-name>facesservlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>MyFacesExtensionsFilter</filter-name>
<url-pattern>/my-webapp/*</url-pattern>
</filter-mapping>
<!-- servlets and their mappings -->
<servlet>
<servlet-name>facesservlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>facesservlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<!-- welcome file to enter the application -->
<welcome-file-list>
<welcome-file> index.jsp </welcome-file>
</welcome-file-list>
</web-app>
FACES-CONFIG.xml
================
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD
JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<!--
Document : faces-config.xml
Created on : 6. November 2006, 09:33
Author : marsud
Description:
Purpose of the document follows.
-->
<faces-config>
<managed-bean id="actionTestControl">
<description>Control for testing Actions</description>
<managed-bean-name>actionTest</managed-bean-name>
<managed-bean-class>net.sudau.test.ActionTest</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule id="actiontest">
<description>Test Actions and ActionListener</description>
<from-view-id>test.jsp</from-view-id>
<navigation-case>
<from-action>add</from-action>
<to-view-id>test.jsf</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>delete</from-outcome>
<to-view-id>test.jsf</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
INDEX.jsp
=========
<jsp:forward page="test.jsf" />
TEST.jsp
========
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<html>
<head>
<title>Actiontests</title>
</head>
<body>
<h1>Action Tests</h1>
<f:view>
<h:form id="addValue">
<h:inputText value="#{actionTest.input}" title="enter
value to add." />
<h:commandButton action="#{actionTest.add}" />
<ul>
<t:dataList var="value"
value="#{actionTest.values}">
<f:verbatim><li></f:verbatim>
<h:commandLink
actionListener="#{actionTest.delete}">
<h:outputText value="#{value}" />
</h:commandLink>
<f:verbatim></li></f:verbatim>
</t:dataList>
</ul>
</h:form>
</f:view>
</body>
</html>
ActionTest.java
===============
package net.sudau.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.faces.event.ActionEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* <code>ActionTest</code>
* @author marsud
* @since 6. November 2006
*/
public class ActionTest {
/** Logger for all instances of this class */
private static final Log LOG = LogFactory.getLog
(ActionTest.class);
private List values;
private String input;
/** Creates a new instance of ActionTest */
public ActionTest () {
LOG.debug ("Create new instance of " + getClass ().getName ());
values = new ArrayList ();
values.add ("Hello");
values.add ("World");
values.add ("1");
values.add ("nothing");
input = "";
}
public void add () {
LOG.debug ("adding value to List. <value= " + input + ">");
values.add (input);
input = "";
}
public void delete (ActionEvent actionEvent) {
LOG.debug ("delete value from List. <value= " +
actionEvent.getSource () + ">");
values.remove (actionEvent.getSource ());
}
public String getInput () {
LOG.debug ("actual input value is: " + input);
return input;
}
public void setInput ( String newValue) {
LOG.debug ("New Value to add is: " + input);
input = newValue;
}
public List getValues () {
Collections.sort (values);
return values;
}
} // end of class ActionTest
Gru=DF
Mark