No action will be executed in Myfaces

Discussion in 'Java' started by marsud, Nov 6, 2006.

  1. marsud

    marsud Guest

    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
     
    marsud, Nov 6, 2006
    #1
    1. Advertising

  2. marsud

    hiwa Guest

    marsud wrote:
    > 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.
     
    hiwa, Nov 7, 2006
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    801
  2. Replies:
    0
    Views:
    2,790
  3. Elhanan

    myfaces for jdk 1.5 only?

    Elhanan, Apr 23, 2006, in forum: Java
    Replies:
    1
    Views:
    422
    Danno
    Apr 24, 2006
  4. markb
    Replies:
    0
    Views:
    1,690
    markb
    Jun 26, 2006
  5. Bhanu

    JSF (MyFaces) Action issue

    Bhanu, Jan 11, 2007, in forum: Java
    Replies:
    0
    Views:
    418
    Bhanu
    Jan 11, 2007
Loading...

Share This Page