2013-09-06 3 views
1

J'ai un problème non résoluble, ou du moins avec mes connaissances limitées sur jsf. Je sais qu'il y a de bonnes solutions à trouver sur stackoverflow, mais je n'arrive pas à comprendre mon erreur. Je veux juste avoir quelques commandlinks comme une barre de navigation et ils devraient changer le contenu d'une balise div pré-définie qui a une clause include. Donc je suppose que mon index pourrait être réinterprété comme une sorte de modèle.jsf navigation y compris les pages de contenu via ajax

mon index:

<h:panelGroup id="navigation" layout="block"> 
    <h:form> 
    <h:panelGrid columns="4" columnClasses="colDefault,colDefault,colDefault,colDefault"> 
     <f:ajax render=":include"> 

      <h:commandLink value="entry1" action="#{menuController.setPage('login')}" /> 
      <h:commandLink value="entry2" action="#{menuController.setPage('register')}" /> 
      <h:commandLink value="entry3" action="#{menuController.setPage('welcome')}" /> 
     </f:ajax> 
    </h:panelGrid> 

    </h:form> 
    </h:panelGroup> 
    <h:panelGroup id="center_content" layout="block" class="center_content" > 
    <h:panelGroup id="include"> 

     <ui:include src="#{menuController.page}.xhtml" /> 

    </h:panelGroup> 
    </h:panelGroup> 

son comme dans ce poste de BalusC avec un petit et assez simple haricot:

@ManagedBean 
public class MenuController implements Serializable{ 

private String page; 


public String getPage() { 
    return page; 
} 

public void setPage(String page) { 
    this.page = page; 
} 
} 

mais je suis un TagAttributeException @

/index.xhtml @17,92 action="#{menuController.setPage('login')}" Could not Resolve Variable [Overflow]: menuController 

J'ai essayé, mais je n'ai aucune idée quoi faire.

+0

'# {menuController.setPage ('login') } 'ceci n'est visible nulle part dans votre code posté. Avez-vous manqué du code? – noone

+0

édité, oui, j'ai copié une version de test – Highstorm

+0

Exécutez-vous Servlet 3.0/EL 2.2? –

Répondre

1

Vous devez mettre le grain dans un champ fixe:

@ManagedBean 
@ViewScoped 
public class MenuController implements Serializable {} 

Et vous devez preinitialize page avec une valeur par défaut:

private String page; 

@PostConstruct 
public void init() { 
    page = "login"; // Default value. 
} 
+0

ups, de corse, merci pour votre aide, BalusC! Toujours apprécier votre travail :) – Highstorm