Dapat disertakan sebagai string kueri GET menggunakan includeViewParamsatribut <h:link>atau includeViewParams=trueparameter permintaan di URL mana pun.
Dapat digunakan pada @RequestScopedbean, tetapi membutuhkan bean @ViewScopedjika Anda ingin parameter view bertahan dari kegagalan validasi yang disebabkan oleh form yang diapit dalam view, jika tidak Anda perlu secara manual menyimpan semua parameter request untuk request selanjutnya dengan <f:param>perintah komponen.
Contoh :
<f:metadata><f:viewParamid="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:messagefor="user_id"/>
Nilai @PostConstructyang ditetapkan tersedia selama memungkinkan inisialisasi / pramuat yang mudah dari properti lain berdasarkan nilai yang ditetapkan.
Tidak mengizinkan konversi / validasi deklaratif dalam tampilan.
Properti terkelola #{param}tidak diperbolehkan pada kacang dengan cakupan yang lebih luas dari ruang lingkup permintaan, jadi kacang harus demikian @RequestScoped.
Jika Anda mengandalkan properti terkelola #{param}yang ada di permintaan POST berikutnya, Anda perlu menyertakannya seperti <f:param>di UICommandkomponen.
Contoh :
@ManagedProperty("#{param.id}")privateLong id;privateUser user;@EJBprivateUserService userService;@PostConstructpublicvoid init(){
user = userService.find(id);}
Tapi Anda harus mengelola validasi diri Anda setiap kali useradalah nulldengan mengutak-atik FacesContext#addMessage()atau sesuatu.
Anda dapat menggunakan keduanya jika keduanya @PostConstructdan includeViewParamswajib. Anda hanya tidak dapat lagi menerapkan konversi / validasi mendetail.
Ada alternatif lain untuk mengambil parameter permintaan dalam kasus luar biasa: FacesContext.getCurrentInstance (). GetExternalContext (). GetRequestParameterMap (). Get ("parametername");
angelcervera
1
@angel: Hanya ketika kacang memiliki cakupan yang lebih luas daripada ruang lingkup permintaan yang membuat @ManagedPropertyparameter permintaan tidak mungkin.
BalusC
hai @BalusC Saya mengandalkan nilai id yang diambil dari param.id menggunakan managedproperty pada posting kedua. Bagaimana cara memasukkannya menggunakan f: param? terima kasih banyak
sys_debug
1
@thufir: Ini disetel selama fase nilai model pembaruan. Konstruksi pasca berjalan jauh sebelum itu, langsung setelah konstruksi kacang dan injeksi ketergantungan. Ini tersedia dalam metode pendengar yang dipanggil oleh <f:event type="preRenderView">atau JSF 2.2 mendatang <f:viewAction>.
@ManagedProperty
parameter permintaan tidak mungkin.<f:event type="preRenderView">
atau JSF 2.2 mendatang<f:viewAction>
.2 perbedaan lainnya:
@ManagedProperty
hanya dapat digunakan dengan biji yang dikelola oleh JSF, bukan dengan biji yang dikelola oleh CDI (@Named
);<f:viewParam>
hanya bekerja dengan parameter permintaan GET.sumber