2014-02-05 3 views
0

список объектов:JSF Target Недоступен '' 0 '' возвращается нуль: javax.el.PropertyNotFoundException

private ArrayList<LegBeanForInsert> listOfLegs; 

Я показываю этот массив, используя нотацию с массивами: 0, 1, ... . позиционное, например:

     <p:selectOneMenu value="#{otcdEventsBean.listOfLegs[0].fixvar}" 
          effect="fade" style="width:100px; height:25px" 
          panelStyle="width:80px" > 
          <f:selectItem itemLabel="Select" itemValue="" /> 
          <f:selectItems value="#{otcdEventsBean.fixedVariableCodes}" 
          itemValue="#{otcdEventsBean.listOfLegs[0].fixvar}" /> 
          <p:ajax listener="#{otcdEventsBean.fixvarchange}" event="change" update="panelUpdate"/> 
         </p:selectOneMenu> 

ОШИБКА:

value="#{otcdEventsBean.listOfLegs[0].fixvar}": Target Unreachable, ''0'' returned null: javax.el.PropertyNotFoundException 

в конструкторе компонента я сделать:

public void initLeg(){ 
    for(int i=0;i<8;i++){ 
     LegBeanForInsert beanLeg = new LegBeanForInsert(); 

     beanLeg.setCallamount(new BigDecimal(0)); 

     beanLeg.setFixvar(""); 

     this.listOfLegs.add(beanLeg); 
    } 
} 

этот метод вызывается другой страницей, и когда страница renderd доза не имеют проблему страницу:

public void setProduct(Object product1, Object product2) { 
    System.out.println("BEGIN::setProduct: " + (String) product2); 
    if (product1 instanceof EqdProduct) { 
     this.eqdProdToedit = (EqdProduct) product1; 

    } else if (product1 instanceof CURROPTRBTProduct) { 
     this.rbtProdType = (CURROPTRBTProduct) product1; 

    } else if (product1 instanceof COMAsianProduct) { 
     this.comAsianProd = (COMAsianProduct) product1; 

    } else if (product1 instanceof CRDProductType) { 
     this.crdProduct = (CRDProductType) product1; 

    } else if (product1 instanceof ComSwapProduct) { 
     firstLegComSw = (ComSwapProduct) product1; 

     if (product2 instanceof ComSwapProduct) { 
      System.out.println("Com Sawp second prod"); 
      secondLegComSw = (ComSwapProduct) product2; 
     } 
    } else if (product1 instanceof List) { 

     // bisogna settare LegBeanForInsert, LE GAMBE SONO 8 !! 
     List<?> legs = (List<?>) product1; 
     String s = (String) product2; 
     System.out.println("setProduct 2nd arg: " + product2); 

     if (s.equals("Legs")) { 
      for (int i = 0; i < legs.size(); i++) { 

       Leg leg = (Leg) legs.get(i); 
       LegBeanForInsert beanLeg = new LegBeanForInsert(); 
       beanLeg.setCallamount(new BigDecimal(leg.getCallamount())); 
       beanLeg.setCallcurrency(leg.getCallcurrency()); 
       beanLeg.setCallmaturity(leg.getCallmaturityNumber()); 
       beanLeg.setCodintord(leg.getCodintord()); 
       beanLeg.setDayconvention(leg.getDayconvention()); 
       beanLeg.setEnddate(leg.getEnddate()); 
       beanLeg.setEventcode(leg.getEventcode()); 
       beanLeg.setEventtype(leg.getEventtype()); 
       beanLeg.setExercisemode(leg.getExercisemode()); 
       beanLeg.setFixvar(leg.getFixvar()); 
       beanLeg.setEndDate(leg.getFmtenddate()); 
       beanLeg.setStartDate(leg.getFmtstartdate()); 
       beanLeg.setFrequency(leg.getFrequency()); 
       beanLeg.setFrequencymultiplier(leg.getFrequencymultiplier()); 
       beanLeg.setFrequencyunit(leg.getFrequencyunit()); 
       beanLeg.setInareas(leg.getInareas()); 
       beanLeg.setIndexname(leg.getIndexname()); 
       beanLeg.setMargin(leg.getMargin()); 
       beanLeg.setNotional(leg.getNotional()); 
       beanLeg.setNumber(leg.getNumber()); 
       beanLeg.setOptioncashdelivery(leg.getOptioncashdelivery()); 
       beanLeg.setOptionmaturity(leg.getOptionMatirityNumber()); 
       beanLeg.setOptiontype(leg.getOptiontype()); 
       beanLeg.setPaycurrency(leg.getPaycurrency()); 
       beanLeg.setPutamount(leg.getPutamount()); 
       beanLeg.setPutcurrency(leg.getPutcurrency()); 
       beanLeg.setPutmaturity(leg.getPutMatirityNumber()); 
       beanLeg.setQuantityunit(leg.getQuantityunit()); 
       beanLeg.setRate(leg.getRate()); 
       beanLeg.setRateconvention(leg.getRateconvention()); 
       beanLeg.setSign(leg.getSign()); 
       beanLeg.setStartdate(leg.getStartdate()); 
       beanLeg.setStrike(leg.getStrike()); 
       this.listOfLegs.add(beanLeg); 
      } 
     } else { 
      System.out.println("MoneyD 2nd arg: " + product2); 

      for (int i = 0; i < legs.size(); i++) { 
       LegMoneyDeal leg = (LegMoneyDeal) legs.get(i); 

       this.legMoneyD.add(leg); 
      } 
     } 
    } else { 
     // non nè nessuno di quelli bisogna settare a null tutto quanto 
     otcdEvents = new OtcdEvents(); 
     crdProduct = new CRDProductType(); 
     firstLegComSw = new ComSwapProduct(); 
     secondLegComSw = new ComSwapProduct(); 
     comAsianProd = new COMAsianProduct(); 
     rbtProdType = new CURROPTRBTProduct(); 
     listOfLegs = new ArrayList<LegBeanForInsert>(); 
     legMoneyD = new ArrayList<LegMoneyDeal>(); 
     eqdProdToedit = new EqdProduct(); 
    } 

} 

конструктор:

public OtcdEventsBean() { 
    try { 
     Context ctx = new InitialContext(); 
     otcdEvents = new OtcdEvents(); 
     crdProduct = new CRDProductType(); 
     firstLegComSw = new ComSwapProduct(); 
     secondLegComSw = new ComSwapProduct(); 
     comAsianProd = new COMAsianProduct(); 
     rbtProdType = new CURROPTRBTProduct(); 
     ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myoracleDS"); 
     rederField = true; 
     listOfLegs = new ArrayList<LegBeanForInsert>(); 
     initLeg(); 

     eqdProdToedit = new EqdProduct(); 
     legMoneyD = new ArrayList<LegMoneyDeal>(); 
     legMoneyD.add(new LegMoneyDeal()); 
     legMoneyD.add(new LegMoneyDeal()); 

     fieldsEditingDisabled = false; 

     loginBean = (LoginBean) FacesContext.getCurrentInstance().getApplication().evaluateExpressionGet(FacesContext.getCurrentInstance(), "#{loginBean}", LoginBean.class); 

     setFixedVariableCodes(new String[2]); 
     getFixedVariableCodes()[0] = "Fixed"; 
     getFixedVariableCodes()[1] = "Variable"; 

     setSignPremiumCodes(new String[2]); 
     signPremiumCodes[0] = "Pay"; 
     signPremiumCodes[1] = "Receive"; 

     setFrequencyUnitCodes(new String[4]); 
     frequencyUnitCodes[0] = "day"; 
     frequencyUnitCodes[1] = "week"; 
     frequencyUnitCodes[2] = "month"; 
     frequencyUnitCodes[3] = "year"; 

     setCashDeliveryCodes(new String[2]); 
     cashDeliveryCodes[0] = "C"; 
     cashDeliveryCodes[1] = "D"; 

     setOptionTypeCodes(new String[2]); 
     optionTypeCodes[0] = "CALL"; 
     optionTypeCodes[1] = "PUT"; 
    } catch (NamingException e) { 
     e.printStackTrace(); 
    } 
} 

полный код фасоли:

http://pastebin.com/EbfuSwHN 
+0

К сожалению, мой последний комментарий был в заблуждении. Единственное, что я могу придумать сейчас, это то, что ваше поле listOfLegs пусто в указанное время. Пожалуйста, разместите определение управляемого компонента, чтобы лучше проанализировать проблему. –

+0

@LuiggiMendoza i напишите мой полный код bean-кода –

+0

Попробуйте переместить всю вашу управляющую логику bean-компонента в метод '@PostConstruct public void init()', перекомпилируйте свои классы, повторно разверните веб-приложение и протестируйте его. –

ответ

0

Как называется метод init. Может быть, это не вызвано? Я не вижу нового определения ArrayList. Когда вы вызываете new на ArrayList? Вы должны получить исключение нулевого указателя в методе init. Вы можете добавить новый ArrayList в начало метода init до цикла. Помните также, что методы набора вызываются несколько раз в JSF, поэтому вы должны ограничить код в методе set.

+0

проверить мои правки –

+0

он вызывается внутри конструктора –

+0

проверить редактирование нового. –

Смежные вопросы