2010-03-09 122 views
1

我会非常感谢一些关于如何处理上述问题的专家意见。大体上它是这样分解的: 我已经实现了一个动态创建的rich:panelMenu,并且根据RichFaces演示,将a4j:outputPanel放在正确的位置以便包含当用户单击菜单中的项目时出现的内容。代码是:如何顶级丰富:panelMenu丰富:outputPanel与h:panelGrid?

  <h:form> 
       <a4j:region id="logs"> 
        <h:panelGrid columns="2" border="0" style="width: 100%; margin: auto;"> 
         <rich:panel header="Menu"> 
          <rich:panelMenu mode="ajax" style="width: 300px"> 

           <!-- feed iteration --> 
           <c:forEach items="#{MyBacking.panelNodes}" var="map"> 
            <rich:panelMenuGroup label="#{map.key}" 
             style="padding-left: 10px;"> 
             <c:forEach items="${map.value}" var="entry"> 
              <rich:panelMenuItem label="#{entry}" 
               style="padding-left: 20px;" 
               action="#{MyBacking.updateCurrent}"> 
               <f:param name="current" value="#{entry}" /> 
              </rich:panelMenuItem> 
             </c:forEach> 
            </rich:panelMenuGroup> 
           </c:forEach> 
          </rich:panelMenu> 
         </rich:panel> 
         <rich:panel header="Content"> 
          <a4j:outputPanel ajaxRendered="true" layout="inline" 
           style="vertical-align: top"> 
           <h:outputText value="#{MyBacking.current}" id="current" /> 
          </a4j:outputPanel> 
         </rich:panel> 
        </h:panelGrid> 
       </a4j:region> 
      </h:form> 

[注意a4j:outputPanel有CSS尝试和垂直对齐到顶部,但含rich:panel一直是我的重点主要表现]

的问题是:

1:我就像两个组件要水平对齐,所以两者的顶部都是水平的。我使用h:panelGrid来尝试和控制菜单和outputPanel,但即使它呈现表格,vertical-align似乎也不起作用。
我认为它可能最终被应用于错误的地方,因此不起作用(例如包含跨度 - 虽然理论上在另一个元素内部的元素应该打开以由该属性控制)。

<h:panelGrid columns="2" border="0" style="width: 100%; margin: auto;"> 

也没有工作。我至少在正确的轨道上?由于右侧面板将包含文件的内容,因此它将比面板菜单长很多。我需要防止panelMenu沿着outputPanel的左侧滑动(现在正在发生的垂直对齐的中间)。

2:我想用px修正panelMenu的宽度,但是如果菜单最终包含一个太长的条目,我注意到这个溢出看起来被固定在隐藏处。我似乎无法获得overflow: auto的工作。我只需要一个水平。在这种情况下滚动条。

3:panelGrid的必须是100%它包含在我听过的h:panelGridwidth:100%造成的问题,所以如果这仍然是我怎样才能得到它周围的情况下选项卡的宽度。?

我希望这是有道理的。我已经使用了一段时间的css,但是迫使我想要射入RF组件比我想象的更加棘手。

非常感谢

回答

0

点1:使用<h:panelGrid columns="2" border="0" style="width: 100%" columnClasses="cols, cols"> ,然后指定你的CSS中的cols类。多次指定它将应用于连续的列。它在documentation中,但未在其示例中引用。