xhtml无法识别在托管Bean中声明的方法

时间:2013-05-22 00:48:14

标签: eclipse jsf-2 primefaces managed-bean

在我的XHTML页面中,我无法调用托管bean中声明的方法,我是这个平台的新手,我希望有人向我澄清这一点。我正在Eclipse Juno 4.2上使用JPA开发一个JSF 2.1项目 这是我的托管代码

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBean;



import java.util.List;

import javax.ejb.Local;

import model.*;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;

import service.EmpFacadeLocal;

/**
 *
 * @author Louuup
 */
@ManagedBean (name= "empbean")
@RequestScoped
@ViewScoped
public class EmpManagedBean {
public Employe emp;
    @EJB
    public EmpFacadeLocal empfacadelocal; 
    public Boolean saisie;
     private List<Employe> emps;
     private String iddd;
     private Employe selectedemp;
     private List<Employe> filteredemps; 
     private Employe[] selectedemps;
    /**
     * Creates a new instance of EmpManagedBean
     */
    public EmpManagedBean() {
        emps = new ArrayList<Employe>();
    }
     @PostConstruct
    public void initEmp(){
        emp = new Employe();
        saisie = false;
         emps = empfacadelocal.getEmpRq("");
    }

    public Employe getEmp() {
        return emp;
    }

    public void setEmp(Employe emp) {
        this.emp = emp;
    }

    public Boolean getSaisie() {
        return saisie;
    }

    public void setSaisie(Boolean saisie) {
        this.saisie = saisie;
    }

    public List<Employe> getEmps() {
        return emps;
    }

    public void setEmps(List<Employe> emps) {
        this.emps = emps;
    }

    public String getIddd() {
        return iddd;
    }

    public void setIddd(String iddd) {
        this.iddd = iddd;
    }

    public Employe getSelectedemp() {
        return selectedemp;
    }

    public void setSelectedemp(Employe selectedemp) {
        this.selectedemp = selectedemp;
    }

    public List<Employe> getFilteredemps() {
        return filteredemps;
    }

    public void setFilteredemps(List<Employe> filteredemps) {
        this.filteredemps = filteredemps;
    }

    public Employe[] getSelectedemps() {
        return selectedemps;
    }

    public void setSelectedemps(Employe[] selectedemps) {
        this.selectedemps = selectedemps;
    }
    public void findEmpaff(){
        //admin = adminfacadelocal.getAdmin(iddd);
        emps = empfacadelocal.getEmpRq("");
    } 
     public void creerEmp(){
         System.out.println("azertre ");
        empfacadelocal.create(emp);
        saisie = true;
    }
}

这是我的xhtml页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <body>

        <ui:composition template="./../resource/Template.xhtml">

            <ui:define name="title">
                <title> Ajout emp</title>
            </ui:define>

            <ui:define name="page">
                <h:form id="dd">  



                    <p:growl id="growl" showDetail="true"/>  


                    <p:panel header="Fiche Emplyé" >  
                        <h:panelGrid columns="2"  style="margin-bottom:10px" cellpadding="5">
                            <h:outputLabel value="Matricule Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{empbean.emp.matEmp}"/>
                            <h:outputLabel value="Nom Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{empbean.emp.nomEmp}"/>
                            <h:outputLabel value="Prénom Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{empbean.emp.prenomEmp}"/>
                            <h:outputLabel value="Date de naissance Employé :"/>
                            <p:calendar disabled="#{empbean.saisie}" locale="pt" showButtonPanel="true" navigator="true" id="pttCal" value="#{empbean.emp.dateNaisEmp}"/>  
                            <h:outputLabel value="Adresse Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{empbean.emp.adressEmp}"/>
                            <h:outputLabel value="N° téléph Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{emp.emp.numTelfEmp}"/>
                            <h:outputLabel value="E-mail Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{empbean.emp.emailEmp}"/>
                            <h:outputLabel value="N° compte Employé :"/>
                            <p:inputText  disabled="#{empbean.saisie}" value="#{empbean.emp.numCompteEmp}"/>

                            <p:selectOneMenu disabled="#{empManagedBean.saisie}" value="#{empbean.emp.fonctionEmp}">  
                                <f:selectItem itemLabel="Jardinier" itemValue="Jardinier" />    
                                <f:selectItem itemLabel="Agent d'hygiene" itemValue="Agent d'hygiene" /> 
                                <f:selectItem itemLabel="Agent de sécurité" itemValue="Agent de sécurité" />    
                                <f:selectItem itemLabel="Magasinier" itemValue="Magasinier" /> 
                            </p:selectOneMenu> 






                        </h:panelGrid><br/>
                        <p:commandButton  disabled="#{empbean.saisie}" value="Valider" update="dd" style="margin-left: 250px;"  actionListener="#{empbean.   }"/>



                    </p:panel> 

                </h:form>  
            </ui:define>

        </ui:composition>

    </body>
</html>

我想在命令按钮的actionlistener中调用“creerEmp”方法,就像这样#{empbean.creerEmp()}但是我不能这样做,请有人帮帮我

2 个答案:

答案 0 :(得分:0)

actionlistener的方法需要有一个ActionEvent参数。但我认为你想要的是一个正常的动作,应该是这样的:

<p:commandButton  disabled="#{empbean.saisie}" value="Valider" 
    update="dd" style="margin-left: 250px;"  action="#{empbean.creerEmp}"/>

答案 1 :(得分:0)

应与#{empbean.creerEmp}一起使用。 ActionEvent参数不是必需的。

首先应该尝试不使用合成组件来查看ActionListener方法是否有效。此外,我认为您正在错误地使用合成组件。