无法从 jsf:action 调用控制器函数

Can't call controller function from jsf:action

我正在尝试在我的控制器 SeminaireControl.java

中调用函数 save
package be.helha.aemt.control;

import java.io.Serializable;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

import be.helha.aemt.ejb.GestionSeminaireEJB;
import be.helha.aemt.entities.Seminaire;

@SessionScoped
@Named
public class SeminaireControl implements Serializable{

    private static final long serialVersionUID = 1L;
    @EJB
    private GestionSeminaireEJB bean;

    public List<Seminaire> getAll()
    {
        return bean.getAll();
    }

    public void save(Seminaire seminaire)
    {
        System.out.println("HELLO");
        bean.save(seminaire);

    }
}

我的 seminaires.xhtml

中的 <a></a>
. . .

    <h:dataTable class="seminaire" value = "#{seminaireControl.getAll()}" var = "seminaire">
        <h:column>
            <f:facet name="header">Id</f:facet>
            <h:form>
               #{seminaire.id_student}
             </h:form>
        </h:column>
        <h:column>
            <f:facet name="header">Nom</f:facet>
            #{studentControl.getNameById(seminaire.id_student)}
        </h:column>
        <h:column>
            <f:facet name="header">Séminaire 1</f:facet>
            <h:inputText value="#{seminaire.seminaire1}"/>
        </h:column>
        <h:column>
            <f:facet name="header">Séminaire 2</f:facet>
            <h:inputText value="#{seminaire.seminaire2}"/>
        </h:column>
        <h:column>
            <f:facet name="header">Séminaire 3</f:facet>
            <h:inputText value="#{seminaire.seminaire3}"/>
        </h:column>
        <h:column>
            <f:facet name="header">Séminaire 4</f:facet>
            <h:inputText value="#{seminaire.seminaire4}"/>
        </h:column>
        <h:column>
            <f:facet name="header">Save</f:facet>
            <a jsf:action = "#{seminaireControl.save(seminaire)}">MODIFIER</a> // THIS LINE
        </h:column>
        <h:column>
            <f:facet name="header">Total</f:facet>
            0
        </h:column>
    </h:dataTable>
. . .

并且出于某种原因,我的代码没有执行(我的数据库没有变化,我的控制台没有 "HELLO")

我认为你应该更换

<a jsf:action = "#{seminaireControl.save(seminaire)}">MODIFIER</a>

<h:commandLink value="MODIFIER" action="#{seminaireControl.save(seminaire)}">

您可能还需要将 h:dataTable 转换为 h:form

<h:form>
   <h:dataTable >
   ..............
   ..............
   </h:dataTable>
<h:form>