Passage de paramètre à la JSF action

Je suis en utilisant GlassFish 3.1, et en essayant de passer le paramètre de contrôle commandButton action. Voici mon code:

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" 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/beans_1_0.xsd" />

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
    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_2_0.xsd" />

ManagedBean classe

package actionParam;

import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

@Named("bean")
@RequestScoped
public class ActionParam {

    public ActionParam() {
        super();
    }

    public String submit(int param) {
        System.out.println("Submit using value " + param);
        return null;
    }

}

et enfin,

Vue

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <meta http-equiv="Content-Type"
        content="text/html; charset=ISO-8859-1" />
    <title>Test Action Param</title>
</h:head>
<h:body>
    <h:form id="actionForm">
        <h:commandButton id="actionButton" value="Submit"
            action="#{bean.submit}">
            <f:param name="param" value="123"></f:param>
        </h:commandButton>
    </h:form>
</h:body>
</html>

Quand j'ai cliquer sur le bouton soumettre, je reçois javax.el.MethodNotFoundException.

Si je supprime <f:param ... /> et passer le paramètre comme suit,

.
:
        <h:commandButton id="actionButton" value="Submit"
            action="#{bean.submit(123)}">
        </h:commandButton>
:
.

il fonctionne OK.

Mais je pensais première manière (à l'aide de f:param) est correcte.

Qui est la bonne façon de passer des paramètres?

Merci d'avance.

InformationsquelleAutor Atul Acharya | 2011-09-13