SORU
3 ŞUBAT 2011, PERŞEMBE


@ViewParam vs ManagedProperty(değer = "#{param.ıd}")

Görünüm tanımlama arasındaki fark nedir bu şekilde Kullanımı

<f:metadata>
  <f:viewParam name="id" value="#{someBean.id}"/>
</f:metadata>

Ve ManagedBean özelliği tanımlama: bunun gibi

@ManagedProperty(value = "#{param.id}")
private Integer id;

CEVAP
3 ŞUBAT 2011, PERŞEMBE


<f:viewParam>:

  • Sadece güncelleme model değerleri aşamasında değeri UIInput uzanır beri) ayarlar.

  • Set değeri <f:metadata> içinde <f:event type="preRenderView" listener="#{bean.init}" /> başlatma ek/önceden ayarlanmış değerlere göre ihtiyacınız @PostConstruct sırasında kullanılamaz. AKSARAY 2.2 beri yerine <f:viewAction> kullanabilirsiniz.

  • İnce taneli daha fazla dönüşüm için <f:converter> <f:validator> iç içe sağlar doğrulama/. <h:message> bile eklenebilir.

  • Sorgu dizesi olarak dahil edilebilir <h:link> includeViewParams=true includeViewParams öznitelik kullanarak herhangi bir URL parametre isteği.

  • Kullanılabilir bir @RequestScoped fasulye, ama gerektirir fasulye @ViewScoped eğer istediğiniz görünüm parametreleri hayatta kalmak için herhangi bir doğrulama hataları nedeniyle formları içine görünümü, aksi takdirde ihtiyacınız için el ile tutma isteği tüm parametreler için bir sonraki isteği <f:param> komutu bileşenleri.

Örnek:

<f:metadata>
    <f:viewParam id="user_id" name="id" value="#{bean.user}"
        required="true" requiredMessage="Invalid page access. Please use a link from within the system."
        converter="userConverter" converterMessage="Unknown user ID."
    />
</f:metadata>
<h:message for="user_id" />

ile

private User user;

ve bir 51**. http://example.com/context/user.xhtml?id=123 çağırarak sayfa dönüştürücüsü id parametre geçmek ve fasulye bir özellik olarak User nesne ayarlanır.


53**:

  • Hemen bean'in inşaat sonrası değerini ayarlar.

  • Set değeri kolay başlatma sağlar @PostConstruct/sırasında mevcut diğer özellikleri set değerine göre ayarlar.

  • Bildirimsel dönüşüm için izin vermez görünümünde doğrulama/.

  • #{param} yönetilen özellik isteği kapsamı daha geniş bir kapsam ile fasulye izin verilmez, bean @RequestScoped olması gereklidir.

  • Eğer varsa #{param} yönetilen özellik sonraki YAZI mevcut olma istekleri güveniyorsun, sonra UICommand bileşenleri <f:param> olarak dahil edebilirsiniz.

Örnek:

@ManagedProperty("#{param.id}")
private Long id;

private User user;

@EJB
private UserService userService;

@PostConstruct
public void init() {
    user = userService.find(id);
}

Ama user FacesContext#addMessage() falan işe yaramaz null her doğrulama kendiniz yönetmek zorunda.


Sanaolabilir@PostConstruct includeViewParams hem zorunlu olduğunda ikisini de kullanın. Sadece ince taneli dönüşüm/onay artık geçerli olmayacaktır.


Ayrıca Bkz:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009
  • Wild Academy

    Wild Academy

    8 Aralık 2009