Я ищу более элегантное решение. Потому что JSF хочет, чтобы это было private + getter и setters, а другой класс JAVA хочет, чтобы это private STATIC + get, sets. Поэтому мне иногда нужно использовать два логических значения для одной вещи, и это вносит некоторую путаницу ...
Просто позвольте делегату-сборщику бинов JSF. Э.Г.
public boolean isProduction() {
return Settings.PRODUCTION;
}
Таким образом, вы получите только одну переменную, содержащую значение, а именно Settings.PRODUCTION
. Вы даже можете отделить его от bean-объекта области видимости и просмотра и обернуть его в управляемый компонент приложения. Более того, если вы позволите ему расширить Map
и поместить значения в конструкцию, тогда вы сможете использовать что-то вроде disabled="#{settings['PRODUCTION']}"
.
Е.Г.
@ManagedBean(name="settings", eager=true)
@ApplicationScoped
public class SettingsManager extends HashMap<String, Object> {
public SettingsManager() {
put("PRODUCTION", Settings.PRODUCTION);
put("DEBUG", Settings.DEBUG);
put("HOSTNAME", Settings.HOSTNAME);
// ...
}
}
Если вы все еще используете JSF 1.x, удалите эти аннотации и отобразите их следующим образом в faces-config.xml
.
<managed-bean>
<managed-bean-name>settings</managed-bean-name>
<managed-bean-class>com.example.SettingsManager</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>