JSF 2.0每次从selectOneMenu中选择一个项目时,如何显示不同的h:panelGroup

我有一个selectOneMenu,显示一些不同的东西类别:

    

我需要根据所选类别显示不同的panelGroup。 示例(选择第一项时需要显示此项)

                     

我不知道该怎么做,因为我需要刷新页面。 有任何想法吗? Ajax可以帮助我吗? 如果是这样,有人可以告诉我怎么样? 我根本不熟悉。

这可以通过ajax轻松完成:

  • 元素放在外部
  • 嵌套 ,并将外部的id放在其render属性中。
  • 为每个内部元素提供一个rendered属性,仅当选择了相应的类别时,该属性才会计算为true。

在这种情况下你说“没有页面刷新”有两种方法可以实现这一点:
1. AJAX:您必须在selectOneMenu上附加带有onChange事件的cartInfo id
这将是reRender cartInfo panelGroup
例:

      

注意:您必须在panelGroup中具有某些属性才能在更改事件上显示为true。

2. JavaScript:您可以将您的Panel放在div中,并可以在onChange事件上再次显示/隐藏div。
例:

  

  

我非常接近解决方案,但出了点问题。 就像你说的那样做了所有的事情:第一和第二个问题都解决了。 问题是当我选择类别时,面板carInfo不会被渲染。

托管bean中的方法有问题吗? 由于某种原因,它不会被调用。 这就是我的代码目前看起来像Managed bean的方式

  public void carSelectedEvent(ValueChangeEvent e) { String tmp = (String) e.getNewValue(); System.out.println("CALLED!!!!!"); if (selectedCategory.trim().equals("automobili")) { carCategorySelected = true; } else if (e.getNewValue().toString().contains("NEKRETNINE")) { } } 

JSF页面选择

     

需要显示的JSF面板

  ... 

当我导航到页面everithing似乎没问题,但我在控制台中注意到这条消息:

信息:警告:FacesMessage已入队,但可能尚未显示。 sourceId = null [severity =(ERROR 2),summary =(一个或多个资源的目标是’head’,但在视图中没有定义’head’组件。),detail =(一个或多个资源具有’head’的目标,但视图中没有定义’head’组件。)]

sourceId = null [severity =(ERROR 2),summary =(一个或多个资源的目标是’head’,但在视图中没有定义’head’组件。),detail =(一个或多个资源具有’head’的目标,但视图中没有定义’head’组件。)]

检查你的头标记,你可能错过了h前缀,写h:head,我用前缀h解决了问题。