2010-05-17 43 views
0

我在使用h:selectOneRadio時遇到了一些麻煩。我有一個正在返回的對象列表,需要顯示。我正在嘗試這樣的事情:使用h:outputFormat消息格式化h:selectOneRadio的f:selectItems

<h:selectOneRadio id="selectPlan" layout="pageDirection"> 
    <f:selectItems value="#{detailsHandler.planList}" /> 
</h:selectOneRadio> 

and planList是計劃清單。計劃的定義是:

public class Plan { 
    protected String id; 
    protected String partNumber; 
    protected String shortName; 
    protected String price; 
    protected boolean isService; 
    protected boolean isOption; 
    //With all getters/setters 
} 

必須出現的每個單選按鈕實際上是在一個屬性文件中的文本,我需要插入PARAMS文本填寫在bean一定的價值。例如,在我的屬性文件中的文字是:

plan_price=The price of this plan is {0}. 

我希望做這樣的事情:

<f:selectItems value="<h:outputFormat value="#{i18n.plan_price}"> 
    <f:param value="#{planHandler.price}"> 
</h:outputFormat>" /> 

通常,如果它不是一個h:selectOneRadio組成部分,如果它只是文字我一起用h:outputFormatf:param標籤在我的.property文件中顯示上面的i18n文件中的消息,並插入在後臺bean中的參數。這裏不起作用。有沒有人有任何想法,我可以如何處理這個?

我正在返回計劃列表,每個計劃都有自己的價格,要顯示的文本保存在屬性文件中。任何幫助非常感謝。

謝謝!


我現在可以按照下面的建議解決上述問題。但現在我有另一個問題。 每個單選按鈕項必須顯示如下:

Click **here** to see what is included. The cost is XX. 

現在上面是什麼顯示每個單選按鈕。 「這裏」需要是一個用戶可以點擊的超鏈接,並且應該彈出一個對話框,其中包含更多信息。我可以顯示上面的句子,但是如何使「這裏」可點擊?

由於上面顯示的內容是返回的SelectItem(Object value,String label)的標籤。

任何想法非常讚賞。

回答

1

傳遞給<f:selectItems />的值必須是javax.faces.model.SelectItem類型的列表或數組。

您可以在SelectItem的構造函數中設置輸出標籤。我想你可以從backing bean訪問你的屬性文件。以獲得一個SelectItems的方法會是這個樣子:

public List<SelectItem> getPlanItems() { 
    List<SelectItem> list = new ArrayList<SelectItem>(); 
    for (Plan plan : planList) { 
    String label = buildPlanPriceLabel(plan.getPrice()); 
    list.add(new SelectItem(plan, label)); 
    } 
    return list; 
} 

離開buildPlanPriceLabel作爲練習留給讀者。

+0

正確。但是,'Map '也適用於JSF 1.x.在JSF 2.x中,您甚至可以使用OP列表嘗試使用的一列或一列javabeans,但您必須設置'var','itemLabel'和'itemValue'屬性以及此處缺少的屬性。另請參閱[這個答案](http://stackoverflow.com/questions/2166934/using-a4jrepeat-or-uirepeat-inside-richdatatable-doesnt-render-radio-buttons/2167025#2167025)爲例。 – BalusC 2010-05-17 21:58:37

+0

感謝您的意見我已按照以下步驟操作,並能夠在我的清單中顯示信息。但是現在我面臨另一個挑戰,我已經編輯了上面的問題。請讓我知道你是否有任何想法。 – msharma 2010-05-18 20:58:30

+0

根據您的要求,h:selectOneRadio完全是使用錯誤的組件!你應該使用ui:repeat或a4j:repeat。 – Naganalf 2010-05-19 19:07:06