2010-12-03 5 views
2

richfacesを使用して、h:outputLabelrich:comboboxコンポーネントを同じ行に直接隣接して表示するにはどうすればよいですか?同じ行のh:outputLabelとrich:comboboxコンポーネントの正しいレイアウト

私が試した2つのアプローチは次のとおりです。


#1の豊富な:レイアウト
は、私が最初 rich:layout & rich:layoutPanelを使用してみましたが、成分は、別々の行に表示されます。ここでは、コードです:

alt text


#2時間:

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

そしてここでは、レンダリングされた出力です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> 

そしてここでは、レンダリングされた出力です:RichFacesのと

alt text


コンポーネントのレイアウトは、徹底的にイライラすることが証明されています。私は、富裕層のレイアウトに関する良い参考文献を持っている人に2位を与えます。 :)

答えて

0

これは多くの方法で行うことができます。そのうちの1つはフラグメントを使用することです

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

+0

私はどのようにSが表示されません –

+0

Shervinあなたは正しい、私の間違い。 h:outputTextのdivまたはh:outputTextのスパンがここで助けになるかもしれません。 –

0

、あなたは<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>

関連する問題