2009-11-28 7 views
1

je suit une partie de l'interface utilisateur sur JSF - c'est un formulaire de recherche simple champ de saisie et de soumettre:Impossible d'obtenir la valeur du champ d'entrée JSF sur backend JAVA

<h:form> 
     <h:commandButton action="#{operation.found}" value="#{msg.search}" /> 
     <h:inputText name="searchParam"/> 
    </h:form> 

Et en conséquence, le back-end, je tente d'obtenir la valeur du champ de saisie de la manière suivante:

public List<Store> getFound() { 

    String name = (String) FacesContext.getCurrentInstance() 
      .getExternalContext().getRequestParameterMap().get(
        "searchParam"); 

    SessionFactory sessionFactory = new Configuration().configure() 
      .buildSessionFactory(); 

    HibernateTemplate hbt = new HibernateTemplate(); 

    hbt.setSessionFactory(sessionFactory); 

    foundStores = hbt.find(BEAN_PATH + " WHERE name = ?", 
      new Object[] { name }); 

    return foundStores; 

} 

Et le nom nul est transmis au serveur principal.

Il semble que problème en partie .jsf, mais de prime abord semble ok ...

Répondre

2

Vous devez pointer le <h:inputText> sur une propriété gérée haricots:

<h:inputText name="searchParam" value="#{searchBean.searchParam}" /> 

et définir votre bean :

private String searchParam; 
public String getSearchParam() {..} 
public void setSearchParam(String searchParam) {..} 

puis utilisez la searchParam dans votre méthode getFound();

Bien sûr, vous devez avoir le haricot défini comme bean géré, mais je suppose que vous l'avez fait:

<managed-bean> 
    <managed-bean-name>searchBean</managed-bean-name> 
    <managed-bean-class>mypackage.SearchBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

Vous pouvez vérifier un tutoriel JSF (comme this, par exemple)

+0

Voir , s'il vous plaît, méthode complète pour la recherche supérieure. Géré géré configuré ok. J'ai ajouté la propriété searchParam au bean. Une interface utilisateur ressemble maintenant: \t \t \t \t \t \t \t \t \t \t Cependant, la valeur null reste affichée dans le backend. – sergionni

+0

la méthode d'action doit être vide, et vous devez utiliser 'operation.getFound', au lieu de operation.found. – Bozho

+0

peut-être que je n'ai pas besoin de searchParam pour le bean? il semble que j'ai juste besoin d'obtenir la valeur d'entrée de la requête et la passer à la requête HQL. du point de Portlets et JSP ce sont des actions claires, mais pas si claires pour JSF et les beans gérés. – sergionni