Highstorm
Highstorm

Reputation: 13

jsf navigation including content pages via ajax

i have a not resolveable problem, or at least with my limited knowledge about jsf. I know there are some good solutions to find on stackoverflow, but i can't figure out my error.

i just want to have some commandlinks like a navigationbar and they should change the content of a pre defined div tag which got an include clause. So i guess my Index could be reinterpreted as a kind of template.

my 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>

its just like in this post of BalusC with a small and pretty simple bean:

@ManagedBean
 public class MenuController implements Serializable{

private String page;


public String getPage() {
    return page;
}

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

but i got a TagAttributeException @

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

i've tryed, but i have no clue what to do.

Upvotes: 1

Views: 743

Answers (1)

BalusC
BalusC

Reputation: 1108722

You need to put the bean in a fixed scope:

@ManagedBean
@ViewScoped
public class MenuController implements Serializable {}

And you need to preinitialize page with a default value:

private String page;

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

Upvotes: 1

Related Questions