Jsf- chiamare due @ManagedBean in JSF

di il
3 risposte

Jsf- chiamare due @ManagedBean in JSF

Index. html

Il problema è il seguente:
1) ho chiamato il primo @ManagedBean Anagrafica che in pratica nel form identifica i miei attributi nome,cognome,ecc......
2) devo chiamare il secondo @ManagedBean crudGenericsImpl.creaAnagrafica('id','nome','congome'...................) nel button action
Mi dà dei problemi che non esegue il mio metodo.

	<h:form>

			<h3>Fai la tua scelta e seleziona le seguenti opzioni:</h3>

			<h:selectOneMenu value="#{anagrafica.scelta}">
				<f:selectItem itemValue="1" itemLabel="Crea Anagrafica" />
				<f:selectItem itemValue="2" itemLabel="Crea Appuntamento" />
				<f:ajax render="@form" execute="@form" />
			</h:selectOneMenu>

			<!-- Visualizza il Pannello Anagrafica -->
			<h:panelGroup rendered="#{anagrafica.scelta == '1'}">
				<br />
				<h1>Crea l'anagrafica:</h1>
				<br />

				<h:outputLabel for="idanagrafica">Id:</h:outputLabel>
				<h:inputText value="#{anagrafica.idanagrafica}" id="idanagrafica"></h:inputText>
				<br />
				<br />

				<h:outputLabel for="nome">Nome:</h:outputLabel>
				<h:inputText value="#{anagrafica.nome}" id="nome"></h:inputText>
				<br />
				<br />

				<h:outputLabel for="cognome">Cognome:</h:outputLabel>
				<h:inputText value="#{anagrafica.cognome}" id="cognome"></h:inputText>
				<br />
				<br />

				<h:outputLabel for="indirizzo">Indirizzo:</h:outputLabel>
				<h:inputText value="#{anagrafica.indirizzo}" id="indirizzo"></h:inputText>
				<br />
				<br />

				<h:outputLabel for="residenza">Residenza:</h:outputLabel>
				<h:inputText value="#{anagrafica.residenza}" id="residenza"></h:inputText>
				<br />
				<br />

				<h:outputLabel for="eta">Eta:</h:outputLabel>
				<h:inputText value="#{anagrafica.eta}" id="eta"></h:inputText>
				<br />
				<br />

				<h:outputLabel for="citta">Città:</h:outputLabel>
				<h:inputText value="#{anagrafica.citta}" id="citta"></h:inputText>
				<br />
				<br />

				<h:commandButton action="crudGenericsImpl.creaAnagrafica('idanagrafica','nome','cognome','indirizzo','residenza','citta','eta')" value="Crea Anagrafica"></h:commandButton>

			</h:panelGroup>




L'errore che mi dà è il seguente:
Unable to find matching navigation case with from-view-id '/index.xhtml' for action 'crudGenericsImpl.creaAnagrafica('idanagrafica','nome','cognome','indirizzo','residenza','citta','eta')' with outcome 'crudGenericsImpl.creaAnagrafica('idanagrafica','nome','cognome','indirizzo','residenza','citta','eta')'

Come posso chiamare il secondo @ManagedBean

3 Risposte

  • Re: Jsf- chiamare due @ManagedBean in JSF

    Il primo managedBean Anagrafica:
    
    package it.nextre.model;
    
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    @ManagedBean(name="anagrafica")
    @SessionScoped
    public class Anagrafica {
    	
    	private int idanagrafica;
    	private String nome;
    	private String cognome;
    	private String indirizzo;
    	private String residenza;
    	private int eta;
    	private String citta;
    	
    	@SuppressWarnings("unused")
    	private String scelta = "0";
    	
    	public Anagrafica(int idanagrafica, String nome, String cognome, String indirizzo, String residenza, int eta,
    			String citta) {
    		this.idanagrafica = idanagrafica;
    		this.nome = nome;
    		this.cognome = cognome;
    		this.indirizzo = indirizzo;
    		this.residenza = residenza;
    		this.eta = eta;
    		this.citta = citta;
    	}
    
    
    	public Anagrafica() {}
    
    
    	public int getIdanagrafica() {
    		return idanagrafica;
    	}
    
    
    	public void setIdanagrafica(int idanagrafica) {
    		this.idanagrafica = idanagrafica;
    	}
    
    
    	public String getNome() {
    		return nome;
    	}
    
    
    	public void setNome(String nome) {
    		this.nome = nome;
    	}
    
    
    	public String getCognome() {
    		return cognome;
    	}
    
    
    	public void setCognome(String cognome) {
    		this.cognome = cognome;
    	}
    
    
    	public String getIndirizzo() {
    		return indirizzo;
    	}
    
    
    	public void setIndirizzo(String indirizzo) {
    		this.indirizzo = indirizzo;
    	}
    
    
    	public String getResidenza() {
    		return residenza;
    	}
    
    
    	public void setResidenza(String residenza) {
    		this.residenza = residenza;
    	}
    
    
    	public int getEta() {
    		return eta;
    	}
    
    
    	public void setEta(int eta) {
    		this.eta = eta;
    	}
    
    
    	public String getCitta() {
    		return citta;
    	}
    
    
    	public void setCitta(String citta) {
    		this.citta = citta;
    	}
    
    
    	public String getScelta() {
    		return scelta;
    	}
    
    
    	public void setScelta(String scelta) {
    		this.scelta = scelta;
    	}
    	
    	
    
    }
    
    
    
    
    il secondo managedbean :
    
    package it.nextre.controller.daoImpl;
    
    import java.io.Serializable;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.Statement;
    import java.util.ArrayList;
    
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    import it.nextre.database.Database;
    import it.nextre.idao.IcrudAnagrafica;
    import it.nextre.idao.IcrudAppuntamento;
    import it.nextre.model.Anagrafica;
    import it.nextre.model.Appuntamento;
    
    @ManagedBean(name = "crudGenericsImpl")
    @SessionScoped
    public class CrudGenericsImpl implements IcrudAnagrafica, Serializable, IcrudAppuntamento {
    
    	private static final long serialVersionUID = 1L;
    
    	public ArrayList<Anagrafica> listAnagrafica = new ArrayList<Anagrafica>();
    	public ArrayList<Appuntamento> listAppuntamento = new ArrayList<Appuntamento>();
    
    	@Override
    	public ArrayList<Anagrafica> creaAnagrafica(int idanagrafica, String nome, String cognome, String indirizzo,
    			String residenza, String citta, int eta) {
    
    		Connection connect = null;
    		Statement statement = null;
    		PreparedStatement preparedStatement = null;
    		PreparedStatement pStatement = null;
    
    		try {
    
    			connect = Database.getConnection();
    			String sql = "insert into anagrafica(idanagrafica,nome,cognome,indirizzo,residenza,eta,citta) values(?,?,?,?,?,?,?)";
    			statement = connect.createStatement();
    			pStatement = connect.prepareStatement(sql);
    
    			pStatement.setInt(1, idanagrafica);
    			pStatement.setString(2, nome);
    			pStatement.setString(3, cognome);
    			pStatement.setString(4, indirizzo);
    			pStatement.setString(5, residenza);
    			pStatement.setInt(6, eta);
    			pStatement.setString(7, citta);
    			pStatement.executeUpdate();
    
    			System.out.println("Dati Anagrafici Inseriti nel Db");
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (connect != null && statement != null && pStatement != null) {
    					connect.close();
    					statement.close();
    					pStatement.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		return listAnagrafica;
    	}
    
    	@Override
    	public ArrayList<Appuntamento> creaAppuntamento(int idappuntamento, String descrizione, String data) {
    		Connection connect = null;
    		Statement statement = null;
    		PreparedStatement preparedStatement = null;
    		PreparedStatement pStatement = null;
    
    		try {
    
    			connect = Database.getConnection();
    			String sql = "insert into appuntamento(idappuntamento,descrizione,data) values(?,?,?)";
    			statement = connect.createStatement();
    			pStatement = connect.prepareStatement(sql);
    
    			pStatement.setInt(1, idappuntamento);
    			pStatement.setString(2, descrizione);
    			pStatement.setString(3, data);
    			pStatement.executeUpdate();
    
    			System.out.println("Dati Appuntamenti Inseriti nel Db");
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (connect != null && statement != null && pStatement != null) {
    					connect.close();
    					statement.close();
    					pStatement.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		return listAppuntamento;
    	}
    }
    
    
    
  • Re: Jsf- chiamare due @ManagedBean in JSF

    robot ha scritto:


    <h:commandButton action="crudGenericsImpl.creaAnagrafica('idanagrafica','nome','cognome','indirizzo','residenza','citta','eta')" value="Crea Anagrafica"></h:commandButton>
    So/ricordo ben poco di JSF ma .... dalla documentazione ufficiale del h:commandButton per l'attributo "action" dice

    MethodExpression representing the application action to invoke when this component is activated by the user. The expression must evaluate to a public method that takes no parameters, and returns an Object (the toString() of which is called to derive the logical outcome) which is passed to the NavigationHandler for this application.
  • Re: Jsf- chiamare due @ManagedBean in JSF

    Ok, come posso risolvere questa situazione?
Devi accedere o registrarti per scrivere nel forum
3 risposte