Правильное расположение компонентов h: outputLabel и rich: combobox на одной строке - PullRequest
2 голосов
/ 03 декабря 2010

С помощью richfaces, как я могу заставить мои h:outputLabel и rich:combobox компоненты отображаться непосредственно рядом друг с другом на одной строке?

Вот два подхода, которые я пробовал.

# 1 rich: Layout
Сначала я попытался использовать rich:layout & rich:layoutPanel, но компоненты отображаются в отдельных строках.Вот код:

<rich:layout>
  <rich:layoutPanel position="left" width="100%">
    <h:outputLabel for="timeSpanUnitsCombo2" value="Time Span " />
    <rich:comboBox id="timeSpanUnitsCombo2" value="#{bean.timeSpanUnitsLabel}" enableManualInput="false">       
      <f:selectItems value="#{bean.timeSpanUnitsList}" />
    </rich:comboBox>
  </rich:layoutPanel>
</rich:layout>

А вот обработанный вывод:

alt text

# 2 h: panelGrid
Затем я попытался использовать h:panelGrid, но снова безуспешно - компоненты равномерно распределены по доступной области, вместо того, чтобы быть непосредственно смежными и выровненными по левому краю, как я планировал,Вот код:

<h:panelGrid columns="2">
  <h:outputLabel for="timeSpanUnitsCombo3" value="Time Span " />
  <rich:comboBox id="timeSpanUnitsCombo3" value="#{bean.timeSpanUnitsLabel}" enableManualInput="false">       
    <f:selectItems value="#{bean.timeSpanUnitsList}" />
  </rich:comboBox>
</h:panelGrid>

А вот обработанный вывод:

alt text

Компонентная компоновка с richfaces оказывается очень разочаровывающей.Я дам второй приз всем, у кого есть хорошие рекомендации по верстке с richfaces.:)

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

Если вы используете шов, вы можете обернуть его в <s:decorate> и использовать <s:label>

Из шва в действии

....<s:label> and <s:message>. The benefit of using the Seam tags is that they are automatically correlated with the adjacent input component, a feature of <s:decorate>

0 голосов
/ 03 декабря 2010

Это можно сделать разными способами.Одним из них является использование фрагмента

<s:fragment>
      <h:outputText value="Time Span" />
      <rich:comboBox id="timeSpanUnitsCombo2" value="#{bean.timeSpanUnitsLabel}" enableManualInput="false">       
            <f:selectItems value="#{bean.timeSpanUnitsList}" />
      </rich:comboBox>
</s:fragment>

Или вы можете использовать div вместо фрагмента.<div> your code...</div>

...