3 Replies Latest reply on Dec 17, 2012 6:45 AM by Philip H

    Non Serializable Exception and Illegal State Exception in ExtendedDatatable

    Philip H Newbie

      Good morning!

       

      I've been working with Richfaces for a just little time yet, and encountered that problem I couldnt solve. Im loading data from a mysql db, words with some number attributes. Im trying to list them in an extended data table and on click show some detailed information about them. I keep getting NonSerializableException and IllegalStateException. If I use a simple model with only 2 strings and put it in the extendeddatatable-> no problem. but as soon as i take a little more complex model 1 string, 5 ints i get these errors. Can anyone tell me where they get thrown or how to resolve them. thanks in advance

       

       

      /*
       * To change this template, choose Tools | Templates
       * and open the template in the editor.
       */
      package beans;
      
      import dao.WordDao;
      import model.testWord;
      import java.util.ArrayList;
      import java.util.Collection;
      import java.util.List;
      import java.util.logging.Level;
      import java.util.logging.Logger;
      import javax.faces.bean.ManagedBean;
      import javax.faces.bean.RequestScoped;
      import javax.faces.bean.ViewScoped;
      import javax.faces.event.AjaxBehaviorEvent;
      import model.Word;
      import org.richfaces.component.UIExtendedDataTable;
      
      /**
       *
       * @author Philip
       */
      @ManagedBean(name = "ResultTableBean")
      @ViewScoped
      public class ResultTableBean {
      
          /**
           * Creates a new instance of testBean
           */
          public ResultTableBean() {
              try {
                  WordDao wdao = WordDao.getInstance();
                  words = (ArrayList <Word>) wdao.getAllWords();
                  
      //            words.add(new testWord(someWords.get(0).toString(),"hi"));
      //            words.add(new testWord(someWords.get(1).toString(),"hi"));
      //            words.add(new testWord(someWords.get(2).toString(),"hi"));
      //            words.add(new testWord("Hi my name is B", "anytext"));
      //            words.add(new testWord("Hi my name is A", "anytext"));
      //            words.add(new testWord("Hi my name is B", "anytext"));
      //            words.add(new testWord("Hi my name is A", "anytext"));
      //            words.add(new testWord("Hi my name is B", "anytext"));
      //            words.add(new testWord("Hi my name is A", "anytext"));
      //            words.add(new testWord("Hi my name is B", "anytext"));
      //            words.add(new testWord("Hi my name is A", "anytext"));
      //            words.add(new testWord("Hi my name is B", "anytext"));
              } catch (Exception ex) {
                  System.out.println(ex.getMessage());
              }
      
      
          }
          private boolean displaySelection = false;
          private List<Word> words = new <Word>ArrayList();
          private ArrayList<Word> selectedwords = new <Word>ArrayList();
          private String choosenString;
          private Collection<Object> selection;
      
          public void someListener() {
              System.out.println("hello world");
          }
      
          public String getChoosenString() {
              return choosenString;
          }
      
          public void setChoosenString(String choosenString) {
              System.out.println("chosen string set to " + choosenString);
              this.choosenString = choosenString;
          }
      
          public void selectionListener(AjaxBehaviorEvent event) {
      
              System.out.println("listener called");
      
              UIExtendedDataTable dataTable = (UIExtendedDataTable) event.getComponent();
              Object originalKey = dataTable.getRowKey();
              selectedwords.clear();
              for (Object selectionKey : selection) {
                  dataTable.setRowKey(selectionKey);
                  if (dataTable.isRowAvailable()) {
                      System.out.println("+");
                      selectedwords.add((Word) dataTable.getRowData());
                      //dataTable.
                  } else {
                      System.out.println("not available");
                  }
              }
              //dataTable.s
              dataTable.setRowKey(originalKey);
          }
      
          public ArrayList<Word> getSelectedwords() {
              return selectedwords;
          }
      
          public void setSelectedwords(ArrayList<Word> selectedwords) {
              this.selectedwords = selectedwords;
          }
      
          public List<Word> getWords() {
              return words;
          }
      
          public void setWords(ArrayList<Word> words) {
              this.words = words;
          }
      
          public Collection<Object> getSelection() {
              return selection;
          }
      
          public void setSelection(Collection<Object> selection) {
              this.selection = selection;
          }
      
          public boolean isDisplaySelection() {
              return displaySelection;
          }
      
          public void setDisplaySelection(boolean displaySelection) {
              this.displaySelection = displaySelection;
          }
      }