JSF 는 하나의 관리 Bean 에서 다른 관리 Bean 을 인용 합 니 다.
만약 에 Bean 을 관리 하 는 속성 과 방법 이 다른 관리 Bean 과 같다 면 코드 의 재 활용 을 위해 똑 같은 코드 를 다시 쓰 는 것 이 아니 라 이 Bean 에서 그 관리 Bean 을 직접 인용 하고 싶 습 니 다.
예시 보기:
----1---JavaCode-----
public class PRequestHisIpBean{
// Bean
private NetManageBean netmanage ;
public PRequestHisIpBean(){
// Bean
if(netmanage!=null)netmanage.manageNet();
}
public NetManageBean getNetmanage() {
if(netmanage==null)netmanage=new NetManageBean();
return netmanage;
}
public void setNetmanage(NetManageBean netmanage) {
this.netmanage = netmanage;
}
}
----2---faces-config.xml---------
<managed-bean>
<managed-bean-name>netmanage</managed-bean-name>
<managed-bean-class>
com.system.NetManageBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>RequestIp</managed-bean-name>
<managed-bean-class>
com.report.PRequestHisIpBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>netmanage</property-name>
<value>#{netmanage}</value>
</managed-property>
</managed-bean>
메모: 현재 netmanage 는 비어 있 습 니 다. Bean 을 참조 하 는 방법 if (netmanage! = null) netmanage. manageNet () 를 직접 실행 하면;netmanage 는 null 입 니 다.
하지만 NetManageBean 을 초기 화 할 때 실행 할 수 있 습 니 다.
원 하 는 방법.현재 구조 함수 가 실 행 된 후에 만 setNetmanage 방법 을 실행 하여 netmanage 에 값 을 부여 합 니 다.
실행 순 서 는:
먼저 구조 함수 에 들 어가 지만 안에 있 는 방법 을 실행 하지 않 습 니 다. 먼저 일반 속성 을 초기 화 합 니 다. 즉, 속성 에 값 을 부여 한 다음 에 야 합 니 다.
구조 함수 중의 방법 을 집행 하 다.
구조 함수 가 완 성 된 대상 이 생 성 된 후에 야 본 관리 Bean 에서 인용 한 다른 관리 Bean 류 의 대상 을 초기 화 합 니 다. 예 를 들 어 NetmanageBean 을 초기 화하 고 netmanage 에 값 을 부여 합 니 다.
이 클래스 를 초기 화 할 때 인 용 된 관리 Bean 의 인 스 턴 스 를 받 으 려 면 실행 순 서 를 바 꾸 고 이 유형의 구조 함수 에서 의 방법 을 setNetmanage 방법 으로 옮 기 고 this. netmanage = netmanage;그리고 집행.
수정 1 의 코드 는:
----3---JavaCode-----
public class PRequestHisIpBean{
// Bean
private NetManageBean netmanage ;
public PRequestHisIpBean(){
}
public NetManageBean getNetmanage() {
if(netmanage==null)netmanage=new NetManageBean();
return netmanage;
}
public void setNetmanage(NetManageBean netmanage) {
this.netmanage = netmanage;
// Bean
if(netmanage!=null)netmanage.manageNet();
}
}
이렇게 하면 (netmanage! = null) netmanage. manageNet ();비어 있 지 않 을 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
XML이란 무엇입니까?이것은 저장, 검색 및 공유할 수 있는 형식으로 데이터를 저장하는 강력한 방법입니다. 가장 중요한 것은 XML의 기본 형식이 표준화되어 있기 때문에 시스템이나 플랫폼 간에 로컬 또는 인터넷을 통해 XML을 공유하거나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.