ajax etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ajax etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Perşembe, Şubat 12, 2009

Ajax a4j:region

A4j:region ile sayfanızın hangi parçalarının ajax işlemi sırasında servera gideceğini belirlersiniz. Yani bir ajax request sırasında gerekli gereksiz sayfa nın tamamının servera gidip gelmesini ve bu şekilde trafik oluşmasını önlemiş oluruz. zaten ajax işlemlerinin hızlı gerçekleşmesi gerekiyor. eğer a4j:region gibi componentleri kullanıp sayfanın sadece ilgili kısmını göndermezsek sayfalar çok yavaş yüklenir ve networkte trafik oluşturur. Eğer region(servera gönderilecek alan) belirlenmezse f:view taglari arasındaki alanlar default region kabul edilir.
<f:view>
....
<a4j:region>
jsf komponentleri
</a4j:region>
....
</f:view>

Ajax a4j:outputPanel

a4j:outputPanel kendi içindeki componentlerin ajax responsunda render edilmesini sağlar. ayrıca outputpanel kendi içindeki componentlerin ajax işlemi sonunda rerender etme işleminde de kullanılır. ajaxRendered="true" kullandığınızda ajaxın rerender metoduna herhangi bir şey yazmanıza bile gerek kalmaz. şöyle ki;
<a4j:outputPanel 
ajaxRendered="true">
<h:panelGrid id="toppanelgrid" columns="2" width="750"
columnClasses="colStyle1,colStyle2">
<h:column>
<h:outputText value="Select One:"></h:outputText>
</h:column>
<h:column>
<h:selectOneMenu value="#{bean.selecteditem}"
required="true">
<f:selectItem itemLabel="Please Select" itemValue="" />
<f:selectItem itemLabel="item1" itemValue="item1" />
<f:selectItem itemLabel="item2" itemValue="item2" />
<a4j:support event="onchange" ajaxSingle="true"
actionListener="#{bean.itemrenderer}"></a4j:support>
</h:selectOneMenu>
</h:column>

<h:column rendered="#{bean.item1renderer}">
<h:outputText value="item1"></h:outputText>
</h:column>
<h:column rendered="#{bean.item1renderer}">
<h:inputText value="#{bean.item1text}"></h:inputText>
</h:column>

<h:column rendered="#{bean.item2renderer}">
<h:outputText value="item2"></h:outputText>
</h:column>
<h:column rendered="#{bean.item2renderer}">
<h:inputText value="#{bean.item2text}"></h:inputText>
</h:column>
</h:panelGrid>
</a4j:outputPanel>

Fakat önemli bir noktayı gözardı etmemek lazım. formunuzda ajaxRendered="true" olan birden fazla outputpanel iniz varsa bunların çalışması birbirini etkileyebilir. bu durumlarda rerender metodunu kullanmak gerekecektir.