2013-02-22 19 views
5

JSF'ye yeni katılıyorum ve sonuç ile sonuç özellikleri arasındaki farkın ne olduğunu anlamaya çalışıyor muyum? Bu, düğmeler ve komut düğmeleri arasındaki fark değildir, ancak aynı düğme etiketindeki sonuç ve eylem öznitelikleri arasındadır.JSF Action vs Outcome Attribute

Mesela ben sahip olabilir:

<h:button value="Go" outcome="<value>" /> 

veya

<h:button value="Go" action="<value>" /> 

Hangisi ne zaman kullanılacağını emin değilim. Ayrıca, <value> <#{bean.methodThatReturnsStringInNavigationRule}> veya <string literal in navigation rule> ise bir fark yaratıyor mu?

Teşekkür ederiz.

+1

Düğmeler genellikle gezinme için kullanılırken, komut düğmeleri genellikle iş eylemlerini gerçekleştirmek için kullanılır (ve gerekirse navigasyon). – skuntsel

+1

Güncellemenize göre, aynı JSF bileşeninin her ikisi de aynı etikete sahip değildir. "", "action" özelliğini desteklemiyor. 'Action' özelliği sadece 'da desteklenir. – BalusC

+0

Bu sorunun başlığı, şimdi bulmak çok daha kolay hale getirir.Artık duplciate olarak görülmesi gerektiğini düşünmüyorum. – bjedrzejewski

cevap

10

Fark eylem yürütülecek bir sunucu yöntemi tanımlar iken, sonuç sayfanızın hedef olacak bir görünüm-id belirtir olmasıdır. Eğer ulaşmaya çalıştığınız hedefine göre JSF girişlerini kullanmalıdır:

  • <h:button outcome="user-management"> hedeflerini kullanıcı yönetimi sayfasına. Bunu bir çeşit bağlantı olarak düşünün. Eğer eylem yönteminde "kullanıcı yönetimi" dönerseniz
  • <h:commandButton action="#{backingBean.goToUserManagement}", sonuç aynı yapıyor ancak bu sunucu tarafında bir mantık yürütmek için izin verir. h:form etiketine gömülmelidir.

Ayrıca bildiğim kadarıyla, sunucu tarafı alıcı yöntemi döndürür "kullanıcı yönetimi" değeri olarak, <h:button outcome="user-management"> veya <h:button outcome="#{backingBean.userManagementNavigationResult}"> arasında hiçbir fark yoktur.

+4

'' '' dışında kullanılabilir, '' yapamaz. –

+0

Ayrıca, ** eylem ** mutlaka * bir fasulye yöntemine güvenmez, ancak, eğer durum böyle değilse, o zaman neden ' 'seçeneğini kullanmayın. – skuntsel

+0

Teşekkürler. Ve sonuçların permütasyonu hakkında ne var = # {backing-bean}? – dev

3

JSF 2.0 API'sini görürseniz, <h:button> etiketi için action özniteliği yoktur. <h:button>, JSF 2.0'daki yeni bir etikettir. Gezinme sonucunu doğrudan outcome özniteliğinde bildirebilir, <h:commandButton> gibi bir sonucu döndürmek için bir fasulye çağırmaya gerek yoktur.

Ancak, tarayıcıyı JavaScript devre dışı bırakılmışsa, navigasyon başarısız olur, çünkü “h: button” etiketi, navigasyonu window.location.href üzerinden işlemek için bir “onclick” olayı üretir.

<h:button value="buton" outcome="login" />   

// HTML çıktı

<input type="button" 
     onclick="window.location.href='/ContextRoot/faces/login.xhtml; return false;" 
     value="buton" /> 

Kaynak: mkyong. İyi örnekler bulabileceğiniz favori web sitem.

JSF için Mükemmel Blog: BalusC. Bu forumda bu kadar çok kişiye bir kahraman :).