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=true
istek parametresi kullanılarak GET sorgu dizesi olarak dahil edilebilir .
Bir @RequestScoped
fasulye üzerinde kullanılabilir , ancak @ViewScoped
gö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 , id
parametreyi dönüştürücüden geçirecek ve User
nesneyi bir bean özelliği olarak ayarlayacaktır .
Fasulye yapımından hemen sonra değeri ayarlar.
Ayar değeri, ayar değerine @PostConstruct
bağ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 UICommand
bileş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 user
olduğu null
kurcalı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.@PostConstruct
includeViewParams
Ayrıca bakınız: