2015-02-19 2 views
0

У меня есть приложение, которое использует JSF реализацию 2.1.29 Sun JSF RI интегрирован с Spring 3.1.0 и 4.3.7 RichFaces со следующим кодом:визуализации тегов в JSF 2

<h:form> 
<a4j:outputPanel rendered="#{searchBean.activeTab}"> 
    ..... 
</a4j:outputPanel> 
</h:form> 

<h:form> 
<a4j:outputPanel id="searchPanel"> 
    <a4j:outputPanel rendered="#{searchBean.activeTab2}"> 

       <div class="formline"> 
        <div class="formLabelGrueso"> 
         <h:outputText value="#{msgs['search.height']}" /> 
        </div> 
        <div class="formTextCorto oblig"> 
         <h:inputText value="#{searchBean.form.height}" required="true" label="#{msgs['search.height']}" maxlength="6"> 
          <f:validateDoubleRange minimum="50.00" maximum="300.00" /> 
         </h:inputText> 
        </div> 
        <div class="formLabelGrueso"> 
         <h:outputText value="#{msgs['searchBean.weight]}" /> 
        </div> 
        <div class="formTextCorto"> 
         <h:inputText value="#{searchBean.form.weight}" label="#{msgs['searchBean.weight]}" maxlength="6"> 
          <f:validateDoubleRange minimum="1.00" maximum="199.00" /> 
         </h:inputText> 
        </div> 
       </div>  
     <a4j:commandButton action="#{searchBean.advancedSearch}" execute="@this" id="buttonDefault" 
      render="searchPanel" value="#{msgs['user.button.search']}"></a4j:commandButton> 
    </a4j:outputPanel> 
</<a4j:outputPanel> 
</h:form> 

В ManagedBean управляется пружинный каркас со следующим кодом:

@Component 
@Scope(WebApplicationContext.SCOPE_SESSION) 
public class SearchBean{ 
    private boolean activeTab; 

    private boolean activeTab2; 

    .... 
} 

, когда я представить, работает на сервере # {searchBean.activeTab} и {#} searchBean.activeTab2 методов. Почему оба метода выполняются, когда действительно только делает вызов ajax, который отображает панель «SearchPanel» ?. Не следует запускать только метод # {searchBean.activeTab2}.

Спасибо.

ответ

0

Я не уверен, что правильно вас понял, но по умолчанию <a4j:outputPanel> будет переписывать с каждым запросом AJAX, даже если вы не поместите свой идентификатор в @render; для отключения этого добавить ajaxRendered="false".

+0

Проблема не в теге , если изменить на . Оба метода все еще работают при выполнении вызова ajax. – oasgar