2016-10-19 15 views
6

Vaadin kullanma (7.7.3) Bir ızgarayı ada göre filtreliyorum, bu filtreleme nesneleri Grid gui'den kaldırmak için birkaç saniye sürüyor. Ve o, hızlandırılmış üzerinde Container kaldırılır Grid bir satırını tıklayın eğer öyleyse, bu bir istisna yükseltir: Ben Container nesneler kaldırır çünkü bu normaldir sanırımBir vaadin ızgarasını filtrelerken bir istisna nasıl yakalanır

Caused by: java.lang.IllegalArgumentException: Given item id (5422bef6-e472-4d3e-af54-316c52d373da) does not exist in the container 
at com.vaadin.ui.Grid$AbstractSelectionModel.checkItemIdExists(Grid.java:1371) 
at com.vaadin.ui.Grid$SingleSelectionModel.select(Grid.java:1460) 
at com.vaadin.ui.Grid$SingleSelectionModel$1.select(Grid.java:1445) 

ve şimdi geçecek gui'ye yayılır.

benim Grid sınıfta checkItemIdExists() yöntemi üzerine yazarak özel durumu yakalamak düşündüm ama her durum için durum yakalamak istiyorum ve ben arıyorum davranış değildir.

Sorum şu: Bu durumu yalnızca bu durumda nasıl yakalayabilirim?

+0

Filtreyi kullanmadan önce öğenin seçimini nasıl kaldıracağınızı mı soruyorsunuz? veya bu istisnayı nasıl önleyeceğinizi mi soruyorsunuz? – JorgeHortelano

+0

Sadece IllegalArgumentException yakala .. – Jobin

+0

İstisnaı yakalamak mümkün değil. Bu istisna uygulama kodunda başlatılmamıştır. Bileşeni kullanırken vaadin bileşen kitaplığı tarafından başlatılan gibi görünüyor. – JorgeHortelano

cevap

1

Bulduğum tek geçici çözüm, checkItemIdExists yöntemini devre dışı bırakmak için Vaadin'deki kılavuz seçimini geçersiz kılmaktır. Bu, sahip olduğunuz istisnayı başlatan yöntemdir.

import com.vaadin.ui.Grid.SelectionModel; 
import com.vaadin.ui.Grid.SingleSelectionModel; 

public class SingleSelectionModelNotChecked extends SingleSelectionModel implements SelectionModel { 

    @Override 
    protected void checkItemIdExists(Object itemId) throws IllegalArgumentException { 
    // Nothing to do. No check is done, no exception is launched when the filter is applying. 
    } 
} 

Artık ile hazırlanmak içine bu içerebilir: Elbette

setSelectionModel(new SingleSelectionModelNotChecked()); 

, şimdi ızgara kontrol edemez ızgara veya olmayan seçilen öğe.

0

Viritin Add-on https://vaadin.com/directory#!addon/viritin 'u kullanabilirsiniz, sunucu tarafı çağrılarını destekler, Vaadin Grid veritabanından tüm verileri yükler veya size VeriSource'u kullanarak ContainerDataSource'u gönderirsiniz.

İlgili konular