无法从jsf:action调用控制器功能

时间:2019-01-16 10:53:17

标签: java java-ee xhtml jfs

我正在尝试在控制器save中调用函数SeminaireControl.java

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);

    }
}

在我的<a></a>中有seminaires.xhtml

. . .

    <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”)

1 个答案:

答案 0 :(得分:0)

我认为您应该替换

<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>