Вы можете использовать атрибут rendered
. Что-то вроде
<apex:repeat var "a" value="{!accounts}" rendered="{!NOT(AccountsEmpty)}">
<apex:outputLabel for="link" value="{!a.name}" />
</apex:repeat>
и в вашем контроллере добавьте метод:
public boolean getAccountsEmpty(){
return this.accounts == null || this.account.size() == 0;
}
РЕДАКТИРОВАТЬ: Добавление, как также не отображать родительские компоненты / страницу
Здесьэто некоторая углубленная документация по этому , проще говоря, вам нужно добавить атрибут к вашему компоненту с повторением в нем, чтобы вы могли передать в контроллер родительской страницы / компонентов apex, например, если ваша родительская страница имела контроллер apexс именем MyApexController
...
<apex:attribute name="controller" description="parent page controller" type="MyApexController" assignTo="{!pageController}"/>
Затем вы можете получить доступ к его членам с помощью общедоступных методов получения и установки из компонента. Вот как это будет выглядеть Контроллер родительской страницы
public class MyApexController {
public boolean hasAccounts {get; set;}
public MyApexController(){
//Your controller constructor
}
}
Дочерние компоненты Контроллер Apex
public class MyComponentsController {
public List<Account> accounts {get; set;}
public MyApexController pageController {get; set;} //this will get set by apex:attibute
public MyComponentController(){
if(getAccountsEmpty()){
this.pageController.hasAccounts = false; //no accounts let parent page know
} else {
this.pageController.hasAccounts = true;
}
}
public boolean getAccountsEmpty(){
return this.accounts == null || this.account.size() == 0;
}
Затем на родительской странице или компоненте просто добавьте аналогичный атрибут к вашему дочернему компоненту Тег родительской страницы <apex:page rendered="{!hasAccounts}">
или тег родительского компонента
<apex:component rendered="{!hasAccounts}">