주셔서 감사합니다. JSF는 private + getters와 setter를 원하고 다른 JAVA 클래스는 private STATIC + get, set을 원하기 때문에. 그래서 때로는 한 가지 두 가지 논리 값을 사용해야하며
는 그냥 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>
다르게 달성하고자하는 기능은 무엇입니까? 그것이 뒷받침 빈의 가치에 기초하여 구성 요소를 렌더링하거나 사용하지 못하게하는 경우 이것은 나에게 작업을 수행하는 표준 방법처럼 보이지만 어쩌면 더 큰 문제에 대한보다 우아한 해결책을 찾고있을 것입니다. –
예, 좀 더 우아한 해결책을 찾고 있습니다. JSF는 private + getters와 setter를 원하고 다른 JAVA 클래스는 private STATIC + get, set을 원하기 때문에. 그래서 때로는 한 가지로 두 개의 부울을 사용해야 할 때가 있습니다. 조금 복잡해 지는데 ... – gaffcz
생산은 무엇을 나타 냅니까? 앱 전체에서 정적 메서드를 통해 JNDI를 통해 전역 적으로 액세스 할 수 있는지 여부입니다. 그렇다면 bean의 private 멤버와 setter 메소드를 삭제하고 getProduction()을 변경하여 동일한 정적 메소드를 호출하고 값을 리턴하십시오. 그것이 당신이 가고있는 곳인지 확실하지 않습니다. –