我在使用h:selectOneRadio
时遇到了一些麻烦。我有一个需要显示的正在返回的对象列表。我正在尝试这样的事情:
<h:selectOneRadio id="selectPlan" layout="pageDirection">
<f:selectItems value="#{detailsHandler.planList}" />
</h:selectOneRadio>
和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:outputFormat
和f:param
标记来显示名为{{.property
文件的邮件1}}上面,并插入一个在辅助bean中的参数。这里不起作用。有没有人有任何想法我怎么处理这个?
我将返回一份计划清单,每个计划都有自己的价格,要显示的文本保存在属性文件中。任何帮助非常感谢。
谢谢!
我现在可以按照以下建议解决上述问题。但现在我有另一个问题。 每个单选按钮项必须显示如下:
i18n
现在以上是每个单选按钮显示的内容。 “here”需要是一个用户可以点击的超链接,并且应该显示一个包含更多信息的对话框。我可以显示上面的句子但是如何使“here”可点击?
由于以上是显示的内容,因此返回的是SelectItem(对象值,字符串标签)的标签。
任何想法都非常感激。
答案 0 :(得分:1)
传递给<f:selectItems />
的值必须是javax.faces.model.SelectItem
类型的列表或数组。
您可以在SelectItem的构造函数中设置输出标签。我想你可以从支持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
作为读者的练习。