In Java, ho accesso al valore dei campi Transient della classe. Tuttavia, non accedo agli stessi campi su JSP. Come posso renderli disponibili a JSP?A causa di Hibernate Mapping è necessario disporre di alcuni campi come @Transient ma JSP non ha accesso ad essi
Sto recuperando i valori utilizzando Hibernate, penso che una soluzione a questo sarebbe l'opzione Transformers.aliasToBean ma c'è qualche altra soluzione?
Esiste comunque un modo per eliminare l'annotazione transitoria ma avere la stessa mappatura in Hibernate? In tal caso, il problema sarà risolto.
@AssociationOverrides({
@AssociationOverride(name = "tta.names", joinColumns = @JoinColumn(name = "id"))})
public class Names implements java.io.Serializable {
private static final long serialVersionUID = -30956546435023625398L;
@EmbeddedId
private TableToAssociate tta = new TableToAssociate();
@Transient
public String getid() {
return tta.getMyIds().getId();
}
public void setid(String id) {
this.tta.getMyIds().setId(id);
}
In Java, posso accedervi utilizzando seguente codice
System.out.println(mystudents.getNames().iterator().next().getId());
In JSP, non ho accesso ad essi!
<c:forEach var="nm"items="${mystudents.names}">
${nm.id}
</c:forEach>
Se metto un altro campo di nomi che non è transitorio, JSP mostrano con successo il valore di tale elemento.
e dov'è *** campo transitorio *** nel codice pubblicato? –
@NeerajJain è una joinColumn definita sulla classe. la domanda è aggiornata, anche se non ha importanza in quanto ho getter e setter per transitori. Immagina che non ci sia alcun campo JSP dovrebbe avere accesso ai metodi getter. –
L'intero punto di un campo transitorio è che non è gestito da Hibernate. Il suo valore non è persistente, salvato e non può essere recuperato perché non dovrebbe entrare nel database. Vedi [qui] (http://stackoverflow.com/questions/2154622/why-does-jpa-have-a-transient-annotation) per le specifiche – JamesENL