App incendi fino questa eccezione perché il suo non vede attribuisce la tua voglia di restituire. Metodo getField() restituisce gli attributi non privati, quindi se gli attributi sono privati, il metodo non li vede. Puoi controllare http://docs.oracle.com/javase/tutorial/reflect/member/fieldTrouble.html
Quindi puoi fare in modo che i tuoi attribuzioni cambino su protetto o pubblico e quindi dovrebbero funzionare correttamente. Ma in questo modo (come per esempio su primefaces) si simula un vero database.
public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
List<Car> data = new ArrayList<Car>();
//filter
for(Car car : datasource) {
boolean match = true;
for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
try {
String filterProperty = it.next();
String filterValue = filters.get(filterProperty);
String fieldValue = String.valueOf(car.getClass().getField(filterProperty).get(car));
...
Quindi questa lista simulare base di dati reali solo per esempio. Se vuoi usarlo. quindi devi farlo sul backing bean class e ce la fai. Si apre la connessione già con un filtro o no e quindi si restituiscono i dati dal database.
// MODIFICA: l'uomo ha scritto che dovresti usare getDeclaredField() ma ho provato questo e non ha funzionato bene e genera IlegalAccessException. Quando un pretype attribuisce a protetto, funziona bene. Non so perché.
Hi ma mi sono l'eccezione, anche quando si cerca protected.The verificata un'eccezione durante atjava.lang.IllegalAccessException: Classe com.buddhiedge.server.model.StudyPlanLazyDataModel non può accedere a un membro della classe di com.buddhiedge.server.entity.StudyplanCategory con modificatori " protetto " – user1281029
Ciao Il suo specificatore di accesso pubblico funzionante, sebbene sia contro i principi che dovremmo mantenere i campi membri di DATABASE TABLE (in questo caso) come privati. – user1281029
Man ho avuto lo stesso problema ma quando gli attributi sono stati modificati in modo che il messaggio IllegalAccessEception non fosse più mostrato. Quindi prova a cambiarlo in pubblico. dovrebbe funzionare. Percezione ha già scritto una soluzione come field.setAccessible (true); Ma dopo, prova a farlo nella tua classe di bean backing, in @PostConstruct creerai una nuova classe LazyDataModel e creerai già una dichiarazione per il tuo database con filtro e la dichiarazione tornerà ai tuoi dati filtrati, è "lazy loading". – Sajmon