Arkadaşlar Merhaba bir JSF uygulaması yapıyorum fakat viewScoped kafamı karıştırdı. Aynı sayfa içerisinde değişkenlerin geçerliliğini yitirmemesi gerekiyor yani bean sınıfından yeni bir intance oluşturmaması gerekiyor diye biliyorum. Primefaces kütüphanesinin autoComplete tagini kullandım. Değişken sunucuya gidiyor fakat aşağıdaki autoComplete çalıştığında ilk değişkenim ölmüş. SessionScoped ile istediğim sonucu alıyorum fakat viewScope ile de çalışması gerekmiyor mu?

soruldu: 26 Ağu '12, 12:49

scarface_tnt's gravatar image

scarface_tnt
178364348
cevap kabul oranı: 11%


@ViewScoped = Page Scope da denilebilir. Kisaca siz ayni sayfa(View) uzerinde kaldiginiz surece o Bean aktif olarak kalir, Bean JSF View'in bir niteligi (attribute) olarak kayit edilir, eger JSF View ve onun durumu (state) kayit edilirse Bean de kayit edilir birlikte, View restore yapilirsa Bean de restore yapilir ve request scope icinde konumlanir.

@ViewScoped ayni sayfa icinde bircok edit islemi yapmak icin cok faydali(list, table yada birden cok obje'yi edit yaparken), ozellikle ajax islemlerinde. Eger sizin AutoComplete kodlarinizda her seferinde server tarafina normal request ile gidiyorsaniz @ViewScoped degerleri herzaman degisecektir.

permanent link

cevaplandı: 26 Ağu '12, 13:30

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Aynı sayfadayım. İlk autoComplete üniversiteleri listeliyor ve kullanıcı seçiyor ajax ile değer bean sınıfına kaydediliyor. Alttaki autoComplete ise üniversitenin bölümlerini çekecek ama hangi üniversite olduğu uçmuş. Önerdiğiniz bir çözüm yolu var mı? (mantık hatası veya kodlama hatası olması çok zor çünkü sessionScoped ile düzgün çalışıyor.)

(26 Ağu '12, 14:25) scarface_tnt scarface_tnt's gravatar image

Ayni sayfa ayni Bean uzerinde ajax isleri yapiyorsaniz, normal request - response islemi yapmadiginiz surece degerler kalmasi lazim. Kodlari gormeden birsey demek zor, kod parcalari eklerseniz yorum yapabilirim.

(27 Ağu '12, 04:57) CemIkta ♦ CemIkta's gravatar image
<p:autoComplete completeMethod="#{salarySaveBean.getCompletedSchool}" value="#{salarySaveBean.selectedSchool}"
                                    var="s" itemLabel="#{s.school}" itemValue="#{s}" forceSelection="true" 
                                    converter="schoolConverter" size="30" >
                        <p:ajax event="blur" />
                        <p:column>
                            #{s.school}
                            <br/>
                            <font style="font-size: smaller; color: gray;"> #{s.cityId.city}</font>
                        </p:column>     
                </p:autoComplete>

<p:autoComplete completeMethod="#{salarySaveBean.getCompletedBranch}" value="#{salarySaveBean.selectedBranch}"
                                    var="b" itemLabel="#{b.branch}" itemValue="#{b}" forceSelection="true" 
                                    converter="branchConverter" size="30" >
                        <p:column>
                            #{b.branch}
                            <br/>
                            &nbsp;
                        </p:column>                 
                </p:autoComplete>

Bunlar aynı sayfa içerisinde ki iki autoComplete tagi. Altta ise viewScoped olarak tanımlı bean sınıfımın içinde ki bazı fonksksiyonlar.

public List<School> getCompletedSchool(String query){

FormService formService = new FormService();
SiteService siteService = new SiteService();
List&lt;School&gt; schools = formService.getCompletedSchool(query);
for(School school : schools){
    school.setCityId(siteService.getCityWithSchool(school.getSchoolId()));
}
return schools;

} public List<Branch> getCompletedBranch(String query){

FormService formService = new FormService();
if(selectedSchool != null)
    return formService.getCompletedBranch(query, selectedSchool.getSchoolId());
else
    return formService.getCompletedBranch(query);

}

İlk önce ilk autoComplete çalıştığını varsayalım. Ajax ile bean'e değer yerleşti. Yine ajax ile ikinci autoComplete değer girildiğinde ilk değer null oluyor.

(27 Ağu '12, 07:55) scarface_tnt scarface_tnt's gravatar image

Asagidaki linkdeki demo da da aslinda converter kullanilmis.

completeMethod="#{salarySaveBean.getCompletedSchool}" yerine completeMethod="#{salarySaveBean.completedSchool}" dener misin?(hem managed bean hem de xhtml de)

Bir de selectedSchool ve selectedBranch degiskenlerinin setter ve getter olmali, yazmissindir ama bir control et, converter'dan dolayi dogru deger setleniyor mu diye!

http://www.primefaces.org/showcase-labs/ui/autoCompletePojo.jsf

(27 Ağu '12, 08:43) CemIkta ♦ CemIkta's gravatar image

Çok özür dilerim az önce denediğimde istediğim sonucu aldım. Eclipse stabil bir şekilde deploy etmiyor mu anlamıyorum. Çok teşekkürler.

(27 Ağu '12, 09:18) scarface_tnt scarface_tnt's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×281
×1

Soruldu: 26 Ağu '12, 12:49

Görüntüleme: 653 kez

Son güncelleme: 27 Ağu '12, 09:18

powered by BitNami OSQA