Kaydedilmeden mevcut sayfadan ayrılmak için bir bağlantıyı tıklatmadan önce kaydedilmeyen tüm verileri kullanıcıyı uyarmak istiyorum. JSF'de bunu başarmak için daha iyi bir yaklaşım ne olurdu ki, bu kontrol tüm sayfalar için tek bir yerde yapılır. Herhangi bir öneri takdir edilir.JSF'de kaydedilmemiş verilerin kullanıcı uyarısı
cevap
Yapabilecekleriniz, tüm bağlantılarınıza bir onclick eklemektir. jQuery ile aşağıdaki işlemleri yapabilirsiniz:
$($('a').click(function(){
if(unsavedWork){
return confirm("You have not saved your work, would you like to leave anyway?");
}else{
return true;
}
}););
standart JSF uygulaması kutusunu bunun için imkanları dışarı sağlamaz. Ayrıca, bu bir sunucu tarafı sorundan daha çok müşteri tarafında bir konudur, bu yüzden JavaScript gibi bunun için bir istemci tarafı dili tutmanız gerekir. Crossbrowser uyumlu JavaScript kodunun bu özel işlevsel gereksinim için yazılması tam olarak önemsiz olduğundan, bunun için bir JavaScript kütüphanesi kullanmak istersiniz, bunun için de jQuery gibi.
İşte jQuery'nin yardımıyla bunu nasıl başarabileceğinizi gösteren tam bir başlangıç örneğidir.
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
// Set the unload message whenever any input element get changed.
$(':input').change(function() {
setConfirmUnload(true);
});
// Turn off the unload message whenever a form get submitted properly.
$('form').submit(function() {
setConfirmUnload(false);
});
});
function setConfirmUnload(on) {
var message = "You have unsaved data. Are you sure to leave the page?";
window.onbeforeunload = (on) ? function() { return message; } : null;
}
</script>
Sadece <head>
şablonunda bu yapıştırın (ve tercihen de planı ayrı bunu da sen src
özelliğiyle dahil olan kendi .js
dosyası içine <script>
çiğ kodu) ve ne olursa olsun sahip olduğunuz sayfanın çalışacağız.
- 1. Dosyaları/arabellekleri değiştirirken kaydedilmemiş arabellek uyarısı
- 2. Verilerin
- 3. Raylar - Kaydedilmemiş ilişkili kayıtların silinmesi
- 4. Uyarısı
- 5. regasm RA0000: Hiçbir tür kaydedilmemiş
- 6. Android Verilerin Korunması Veriler
- 7. Dealloc bir denetleyici uyarısı uyarısı
- 8. Temel Verilerin Doldurulmuş sürümü?
- 9. Javascript veri sistemine dosya kaydetme (kullanıcı uyarısı ile)
- 10. Dosya uzantısını kontrol edin ve uyarı görüntülemiyorsa kullanıcı uyarısı
- 11. InstallShield pil seviyesi uyarısı
- 12. Kaydedilmemiş alan ile bir yapı nasıl kopyalanır?
- 13. Kaydedilmemiş komut dosyası sekmeleri nasıl elde edilir
- 14. Python ile kaydedilmemiş .dll işlevlerini çalıştırma
- 15. Swift uyarısı
- 16. Sürükleme: Verilerin değiştirilmesi
- 17. Dinamik verilerin lokalizasyonu
- 18. Redux Store'daki Verilerin Doğrulanması
- 19. Hiyerarşik Verilerin Modellenmesi - GAE
- 20. Erişim verilerin tümünü linq
- 21. Verilerin belleğe kaydedilmesi
- 22. Verilerin tamamını okuyun
- 23. VCR ile hassas verilerin filtrelenmesi
- 24. Matplotlib'deki verilerin ek açıklama aralıkları
- 25. Android'de SD Karttaki verilerin saklanması
- 26. Verilerin ViewPager ile Fragments'a aktarılması
- 27. Verilerin * .npy'de saklanma şekli nedir?
- 28. Özel verilerin dom öğelerinde saklanması
- 29. Tarayıcı yenilemesinde verilerin çoğaltılması - Nodejs
- 30. Haskell'de ikili verilerin Monadic ayrışması
PrimeFaces kullanıyorsanız, jQuery'yi yükleyen komut dosyasını giderin. jQuery, PrimeFaces ile birlikte gelir ve bir sayfada PrimeFaces bileşenlerini kullandığınızda yüklenir. [Uncaught TypeErrors'ta PrimeFaces sonuçlarına jQuery ekleme] konusuna bakın (http://stackoverflow.com/questions/16166039/adding-jquery-to-primefaces-results-in-uncaught-typeerror-over-all-place) –