У меня есть родительский класс
public class ParentBean {
@ManagedProperty(value = "#{bundle}")
private ResourceBundleBean bundle;
public ResourceBundleBean getBundle() {
return bundle;
}
public void setBundle(ResourceBundleBean bundle) {
this.bundle = bundle;
}
}
Теперь у меня есть Bean
@ManagedBean(name = "servicio")
@ViewScoped
public class ServicioBean extends ParentBean {
private Boolean cumple;
public Boolean getCumple() {
return cumple;
}
public void setCumple(Boolean cumple) {
this.cumple = cumple;
}
}
В соответствии с включением новых функций одна альтернатива - это добавление свойств и их методов в родительский класс.
public class ParentBean {
@ManagedProperty(value = "#{bundle}")
private ResourceBundleBean bundle;
public ResourceBundleBean getBundle() {
return bundle;
}
public void setBundle(ResourceBundleBean bundle) {
this.bundle = bundle;
}
private final Map<String,String> listaSiNo = new HashMap<String, String>() {{
put("S", "Sí");
put("N", "No");
}};
public Map<String,String> getListaSiNo() {
return listaSiNo;
}
}
Он отлично работает в моем фейс-листе (с наследованием).
<p:outputLabel value="Cumple?:" for="itCumple" />
<p:selectOneMenu id="itCumple" value="#{servicio.cumple}" >
<f:selectItems value="#{servicio.listaSiNo.entrySet()}" var="entry"
itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</p:selectOneMenu>
Чтение этой статьи: https://www.baeldung.com/java-static-default-methods
Но я хочуиспользовать метод интерфейса Почему ?.Поскольку у меня есть несколько Бинов, и я не хочу влиять на все Бины.
public interface ListasForBeans {
default Map<String,String> getListaSiNo() {
Map<String,String> listaSiNo = new HashMap<String, String>() {{
put("S", "Sí");
put("N", "No");
}};
return listaSiNo;
}
}
Я хочу вставить в выбранные Бины только оператор implements ListasForBeans
.(не более getter и setter о внутренних свойствах в интерфейсе, в затронутых bean-компонентах) ...
@ManagedBean(name = "servicio")
@ViewScoped
public class ServicioBean extends ParentBean implements ListasForBeans {
private Boolean cumple;
public Boolean getCumple() {
return cumple;
}
public void setCumple(Boolean cumple) {
this.cumple = cumple;
}
}
У меня есть эта ошибка:
javax.servlet.ServletException: The class 'ServicioBean'
does not have the property 'listaSiNo'.
Isэто возможно?
Как это сделать?