@ViewParam vs ManagedProperty(değer = "#{param.ıd}") | Netgez.com
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

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Rhapsody

    Rhapsody

    7 ÅžUBAT 2008
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011