Где находится следующее свойство в requestScope?"RequestScope.shouldRender" - PullRequest
2 голосов
/ 23 марта 2012

Я прошу использовать простые символы, и в этом коде для remoteCommand я вижу # {requestScope.shouldRender}, и я озадачен

<h:form id="form">  

<p:commandButton value="Load" type="button" onclick="lazyload()" id="btnLoad" />  

<p:outputPanel id="lazypanel" layout="block">  
    <h:outputText value="This part of page is lazily loaded on demand using a RemoteCommand"   
            rendered="#{requestScope.shouldRender}"/>  
</p:outputPanel>  

<p:remoteCommand name="lazyload" update="lazypanel">  
    <f:setPropertyActionListener value="#{true}"   
        target="#{requestScope.shouldRender}" />  
</p:remoteCommand>  

Я видел класс простых лиц, связанный с commandButton и remoteCommand , но я не нахожу ничего связанного с shouldRender . У меня есть информация о поиске по запросу, но я не нашел информации.

Как можно вызвать «shouldRender»? Есть ли еще свойства / методы для вызова таким же образом ???

С уважением.

1 Ответ

3 голосов
/ 23 марта 2012

#{requestScope} ссылается на карту атрибутов запроса, которую можно получить по ExternalContext#getRequestMap() (что, в свою очередь, делегирует дальше HttpServletRequest#get/setAttribute(), если вы знаете базовый API сервлетов).

В следующей строке

<f:setPropertyActionListener value="#{true}"   
    target="#{requestScope.shouldRender}" /> 

в основном задает атрибут запроса с именем "shouldRender" и значением "true" в текущем запросе, когда родительский компонент команды был

Рендеринг атрибута выходного текста просто перехватывает его во время ответа рендеринга того же самого HTTP-запроса:

rendered="#{requestScope.shouldRender}"

Все со всеми, это просто способ установкиатрибут в области запроса без необходимости для целевого объекта EJB.Эффективно так же, как

<p:outputPanel id="lazypanel" layout="block">  
    <h:outputText value="This part of page is lazily loaded on demand using a RemoteCommand"   
            rendered="#{bean.shouldRender}"/>  
</p:outputPanel>  

<p:remoteCommand name="lazyload" update="lazypanel">  
    <f:setPropertyActionListener value="#{true}"   
        target="#{bean.shouldRender}" />  
</p:remoteCommand>  

с

@ManagedBean
@RequestScoped
public class Bean {

    private boolean shouldRender;

    // Getter+setter.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...