No action will be executed in Myfaces

M

marsud

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</listener-class>
</listener>

<!-- filtersettings for MyFacesExtentions -->
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>

<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
<!--
<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:eek:utputText 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ß
Mark
 
H

hiwa

marsud said:
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</listener-class>
</listener>

<!-- filtersettings for MyFacesExtentions -->
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>

<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
<!--
<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:eek:utputText 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ß
Mark
1. Value of action attribute, a method binding, should point a method
of no-arg and returning a String.
2. Your <navigation-case> entries are weird and wrong. See standard
documentations, or good books, on JSF app development/deployment.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top