2016-04-11 19 views
1

JSF ajax isteği ile girdinin değerini değiştirmeye çalışıyorum.JSF ajax olayı değiştirecek

O JSF kodu vardır:

<h:inputSecret id="pwd" value="#{info.password}" redisplay="true"> 
    <f:ajax event="focus" listener="#{info.changePassword}" /> 
</h:inputSecret> 

ve info fasulye içerir:

public String getPassword() { 
    return ""; 
} 

public void changePassword(AjaxBehaviorEvent e) { 
    UIInput input = (UIInput)e.getComponent(); 
    input.setValue(createRandomPassword()); 
} 

createRandomPassword() kısa rastgele dize oluşturur.

Ancak, girişler netlendiğinde, changePassword işlevinin çağrıldığını ve bazı rasgele dizeler belirlediğini görebiliriz, ancak girişin değeri boş kalır.

Peki neden setValue değeri bileşene ayarlamıyor? Nasıl çalışabilirim?

+0

vasfını hale kullanarak, değerini ayarladıktan sonra şifre giriş bileşenini yeniden işlemek gerekir. Sadece sunucu tarafı modelini güncellersiniz. Ancak neden sadece 'şifre' denen bir alan oluşturup etkinlikten girdi almak yerine ayarlamak istemiyorsunuz? – Kukeltje

+0

@Kukeltje JSF ile yeni oluyorum, işi yapacağını düşündüm. Bana bir örnek gösterebilir misin? – nrofis

+0

Lütfen biraz ** iyi ** öğreticilerle başlayın ... Bkz. Https://stackoverflow.com/tags/jsf/info Bu, böyle bir temel şeydir, bunları okumak size daha fazla şey hakkında bilgi verir. – Kukeltje

cevap

0

Sen hiçbir yerde ui tarafını güncellemek için söylemek çünkü

<h:inputSecret id="pwd" value="#{info.password}" redisplay="true"> 
    <f:ajax event="focus" listener="#{info.changePassword}" render="pwd"/> 
</h:inputSecret> 
+0

Çalışıyor! Teşekkür ederim! – nrofis

+1

Aynı şeyi benim için de yapacağını biliyorum. rica ederim. – AsSiDe