John1905
04-11-2010, 10:59
Salve a tutti, questo è il mio primo post nel forum.
Vi spiego subito il mio problema.
Stò sviluppando un'applicazione web che utilizza Tomcat 7, MySql 5, Hibernate 3, jsf 1.2 e Richfaces 3.3.3.
Devo creare una pagina che fà un semplice inserimento di un nuovo record in una tabella. Questa tabella, Sottoconto, contiene una Foreign Keys chiamata idConto collegata al'id(un intero) di un'altra tabella, Conto.
Ora, nei file di Hibernate, più precisamente Sottoconto.java, questa chiave è dichiarata come private Conto conto quindi di tipo conto.
Questo è il form di inserimento:
<h:form id="nuovoSottocontoForm">
<div class="divForm">
<div class="leftDivForm">Conto</div>
<div class="rightDivForm">
<h:inputText id="conto" value="#{sottocontoBean.conto }"/>
<rich:suggestionbox for="conto" var="varConto" suggestionAction="#{contoBean.autocomplete}">
<h:column>
<h:outputText value="#{varConto.descrizione}"/>
</h:column>
</rich:suggestionbox>
</div>
</div>
<div class="divForm">
<div class="leftDivForm">Descrizione</div>
<div class="rightDivForm"><h:inputText id="descrizione" value="#{sottocontoBean.descrizione }"/></div>
</div>
<div class="divForm">
<div class="leftDivForm">Sigla</div>
<div class="rightDivForm"><h:inputText id="sigla" value="#{sottocontoBean.sigla }"/></div>
</div>
<br class="brNew"/>
<div class="center-align">
<a4j:commandButton type="submit" value="Salva" action="#{sottocontoBean.newSottoconto }" >
</a4j:commandButton>
</div>
</h:form>
Conto grazie al suggestionBox raccoglie i valori dal db ed effettua l'autocomplete, i dati vengono poi passati alla funzione newSottoconto presente in sottocontoBean.
public String newSottoconto() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction t = session.beginTransaction();
try {
Sottoconto b = new Sottoconto();
Conto conto;
conto=getConto();
b.setConto();
String descrizione;
descrizione=getDescrizione();
b.setDescrizione(descrizione);
String sigla;
sigla=getSigla();
b.setSigla(sigla);
session.persist(b);
t.commit();
//session.close();
//this.getRisultati();
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
Il problema è che inputText passa alla funzione una stringa mentre per l'inserimento è necessario un oggetto di tipo Conto.
Non sò se c'è un metodo per passare alla funzione un oggetto di tipo conto(ho provato sia con setPropertyActionListener sia con Param senza risultati) oppurese si può gestire la cosa direttamente nella funzione.
Avevo pensato anche a fare una query facendo una ricerca avendo come base la stringa(lo avevo fatto in jsp ed effettivamente funzionava) però visto che poi avrei altre tabelle con un numero maggiore di chiavi esterne ho paura che la cosa con molti record diventerebbe eccessivamente pesante.
Spero di essere stato sufficientemente chiaro, grazie in anticipo.
Vi spiego subito il mio problema.
Stò sviluppando un'applicazione web che utilizza Tomcat 7, MySql 5, Hibernate 3, jsf 1.2 e Richfaces 3.3.3.
Devo creare una pagina che fà un semplice inserimento di un nuovo record in una tabella. Questa tabella, Sottoconto, contiene una Foreign Keys chiamata idConto collegata al'id(un intero) di un'altra tabella, Conto.
Ora, nei file di Hibernate, più precisamente Sottoconto.java, questa chiave è dichiarata come private Conto conto quindi di tipo conto.
Questo è il form di inserimento:
<h:form id="nuovoSottocontoForm">
<div class="divForm">
<div class="leftDivForm">Conto</div>
<div class="rightDivForm">
<h:inputText id="conto" value="#{sottocontoBean.conto }"/>
<rich:suggestionbox for="conto" var="varConto" suggestionAction="#{contoBean.autocomplete}">
<h:column>
<h:outputText value="#{varConto.descrizione}"/>
</h:column>
</rich:suggestionbox>
</div>
</div>
<div class="divForm">
<div class="leftDivForm">Descrizione</div>
<div class="rightDivForm"><h:inputText id="descrizione" value="#{sottocontoBean.descrizione }"/></div>
</div>
<div class="divForm">
<div class="leftDivForm">Sigla</div>
<div class="rightDivForm"><h:inputText id="sigla" value="#{sottocontoBean.sigla }"/></div>
</div>
<br class="brNew"/>
<div class="center-align">
<a4j:commandButton type="submit" value="Salva" action="#{sottocontoBean.newSottoconto }" >
</a4j:commandButton>
</div>
</h:form>
Conto grazie al suggestionBox raccoglie i valori dal db ed effettua l'autocomplete, i dati vengono poi passati alla funzione newSottoconto presente in sottocontoBean.
public String newSottoconto() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction t = session.beginTransaction();
try {
Sottoconto b = new Sottoconto();
Conto conto;
conto=getConto();
b.setConto();
String descrizione;
descrizione=getDescrizione();
b.setDescrizione(descrizione);
String sigla;
sigla=getSigla();
b.setSigla(sigla);
session.persist(b);
t.commit();
//session.close();
//this.getRisultati();
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
Il problema è che inputText passa alla funzione una stringa mentre per l'inserimento è necessario un oggetto di tipo Conto.
Non sò se c'è un metodo per passare alla funzione un oggetto di tipo conto(ho provato sia con setPropertyActionListener sia con Param senza risultati) oppurese si può gestire la cosa direttamente nella funzione.
Avevo pensato anche a fare una query facendo una ricerca avendo come base la stringa(lo avevo fatto in jsp ed effettivamente funzionava) però visto che poi avrei altre tabelle con un numero maggiore di chiavi esterne ho paura che la cosa con molti record diventerebbe eccessivamente pesante.
Spero di essere stato sufficientemente chiaro, grazie in anticipo.