我有这个模型:
public class Rent {
private Integer priceDay;
private Integer priceWeek;
private Integer priceMonth;
// ...
}
我想根据下拉列表中选择的价格类型显示所需期限的价格,可以是“日”、“周”和“月”。目前,我已解决如下:
<h:selectOneMenu value="#{bean.priceType}">
<f:selectItem itemValue="" itemLabel="Price" />
<f:selectItem itemValue="day" />
<f:selectItem itemValue="week" />
<f:selectItem itemValue="month" />
<f:ajax listener="#{bean.changePrice}" render="price" />
</h:selectOneMenu>
<h:outputText id="price" value="#{bean.price}" />
和
public void changePrice(){
if (priceType.compareTo("day") == 0) {
price = rent.getPriceDay();
} else if (priceType.compareTo("week") == 0) {
price = rent.getPriceWeek();
} else if (priceType.compareTo("month") == 0) {
price = rent.getPriceMonth();
}
}
然而,我觉得这很笨拙,应该有一种更简单、更优雅的方法来实现同样的效果,而不需要整个 if-else 块和控制器中模型属性的副本。这可能吗?