Değeri yalnızca güncelleme modeli değerleri aşamasında ayarlar (genişlediğinden UIInput).
Ayar değeri sırasında mevcut değildir @PostConstruct, bu nedenle ayar değerlerine göre başlatma / ön yükleme yapmak için ek bir <f:event type="preRenderView" listener="#{bean.init}" />iç <f:metadata>kısma ihtiyacınız vardır . JSF 2.2'den beri <f:viewAction>bunun için kullanabilirsiniz .
Yuvalanmış <f:converter>ve <f:validator>daha ayrıntılı dönüştürme / doğrulama sağlar. Bir bile <h:message>eklenebilir.
Herhangi bir URL'de includeViewParamsözniteliği <h:link>veya includeViewParams=trueistek parametresi kullanılarak GET sorgu dizesi olarak dahil edilebilir .
Bir @RequestScopedfasulye üzerinde kullanılabilir , ancak @ViewScopedgörünüm parametrelerinin, görünümde bulunan formların neden olduğu herhangi bir doğrulama hatasından kurtulmasını istiyorsanız , fasulyenin olmasını gerektirir , aksi takdirde sonraki istekler için tüm istek parametrelerini <f:param>komutta manuel olarak saklamanız gerekir. 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 @FacesConverter("userConverter"). Sayfayı http://example.com/context/user.xhtml?id=123 ile çağırmak , idparametreyi dönüştürücüden geçirecek ve Usernesneyi bir bean özelliği olarak ayarlayacaktır .
Fasulye yapımından hemen sonra değeri ayarlar.
Ayar değeri, ayar değerine @PostConstructbağlı olarak diğer özelliklerin kolay başlatılmasına / önceden yüklenmesine olanak tanıyan süre boyunca mevcuttur .
Görünümde bildirim temelli dönüştürme / doğrulamaya izin vermez.
Yönetilen özelliğine, #{param}istek kapsamından daha geniş kapsamı olan fasulyelerde izin verilmez, bu nedenle fasulyenin olması gerekir @RequestScoped.
Eğer bir yönetilen özelliğini itimat ederse #{param}sonraki POST istekleri mevcut olan, o zaman olarak eklemenize gerek <f:param>içinde UICommandbileşenlerin.
Örnek :
@ManagedProperty("#{param.id}")
private Long id;
private User user;
@EJB
private UserService userService;
@PostConstruct
public void init() {
user = userService.find(id);
}
Ama ne zaman doğrulama kendini yönetmek zorunda userolduğu nullkurcalıyor tarafından FacesContext#addMessage()ya da bir şey.
Her ikisini birden ve zorunlu olduğunda da kullanabilirsiniz . Artık yalnızca ayrıntılı dönüştürme / doğrulama uygulayamayacaksınız.@PostConstructincludeViewParams
Ayrıca bakınız: