내 페이지가 나타날 때마다 테이블 쿼리가 실행됩니다. 나는첫 번째로드시 테이블로드 안 함 Oracle ADF
https://blogs.oracle.com/shay/entry/preventing_queries_when_page_f
을이 일을 시도하지만 여전히 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 새로 고침 조건을 절대로 설정하려고 시도했지만 데이터를 다시 가져올 수 없습니다. JDev 11g을 사용하고 있습니다.
감사합니다.
내 페이지가 나타날 때마다 테이블 쿼리가 실행됩니다. 나는첫 번째로드시 테이블로드 안 함 Oracle ADF
https://blogs.oracle.com/shay/entry/preventing_queries_when_page_f
을이 일을 시도하지만 여전히 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 새로 고침 조건을 절대로 설정하려고 시도했지만 데이터를 다시 가져올 수 없습니다. JDev 11g을 사용하고 있습니다.
감사합니다.
JDeveloper 12.1에서 필자가 수행 한 작업을 공유 할 수 있습니다. 11g에서 작동하는지 확실하지 않습니다. 나는 그것이 최선의 방법이라고 확신하지도 않습니다. 그러나 그것은 나를 위해 일했습니다.
아이디어는 초기 쿼리 실행을 막는 것이 아니라 오히려 빠르게 수행하고 데이터를 반환하지 않는 것입니다. 접근 방식은 응용 프로그램 모듈의보기 인스턴스에서 초기 쿼리 기준을 설정하는 것입니다.
이 방법은 뷰 객체에 적어도 하나의 바인드 변수가 있다고 가정합니다. 그렇지 않다면, 이것을 위해 추가해야 할 것입니다.
여기에서 페이지에 처음 사용할보기 기준을 지정할 수 있습니다. 따라서 * (A) 빨리 실행하고 (B) 데이터를 반환하지 않는 초기 매개 변수를 설정하십시오.
그런 다음 나중에 데이터를 반환 할 올바른 값으로 바인드 변수를 프로그래밍 방식으로 재설정하십시오. 쿼리 실행.
내가 아는 가장 간단한 방법은 페이지 정의에서 반복기의 "새로 고침"특성을 올바르게 설정하는 것입니다. 당신이 당신의 새로 고침 할 때 당신은 단순히 순간을 관리 할 수있는이 코드 # {viewScope.yourBean.refresh}
public class YourBeanClass {
private boolean refresh = false;
public void someAction(ActionEvent actionEvent) {
//some custom logic to set refresh flag
refresh = true;
}
public boolean isRefresh() {
return refresh();
}
}
: 는 설정 새로 고침을 수행하려면 = ifNeeded 후 표현 언어, 같은 뭔가 RefreshCondition 설정 모델.
이러한 솔루션은 쿼리 실행을 막는 데 효과적이지만 사용자가 먼저 검색을 수행하지 않고 웹 페이지에 테이블을 표시한다는 것을 알 수 있습니다.
일반적으로 웹 페이지는 사용자가 쿼리를 입력 할 수 있도록 페이지에 af : query 또는 af : quickquery 구성 요소를 가지고 있기 때문에 자동으로 쿼리하도록 ADF가 작성됩니다. 쿼리가 실행되면 결과가 반환되고 테이블 또는 폼이 채워집니다 (페이지 디자인에 따라 다름). 페이지에 이러한 검색 구성 요소 중 하나를 포함하면 검색이 실행될 때까지 페이지가 쿼리를 실행하지 못하게됩니다. 또한 작업 흐름을 사용하여 페이지에 대한 항목에 대한 쿼리를 실행하고 데이터 컨트롤의 실행 작업을 페이지로 이동하기 전 /으로 이동하기 전에 추가 할 수 있습니다.
Shay의 블로그 게시물은 2009 년 이후이며 검색 구성 요소를 사용하지 않고 대신 매개 변수로 실행을 사용하는 사례를 다루고 있습니다. 이게 당신이 사용하고있는 것입니까? 유스 케이스에 대해 더 자세히 말하면 도움이 될 것입니다.
고마워요! 그게 효과가있어. – Graeme