четверг, 10 апреля 2014 г.

Multy check box for big table

1. Открываем EO VO на основе таблицы с большим количеством записей

2. В EO добавляем атрибут Attr (Transient, boolean, NUMBER, editable allways)

3. Добавляем Attr в VO

4. Создаем session bean StateHolderBean.java


public class StateHolderBean {
    private MyCheckBoxHolder valholder = new MyCheckBoxHolder();

    public void setValholder(StateHolderBean.MyCheckBoxHolder valholder) {
        this.valholder = valholder;
    }

    public StateHolderBean.MyCheckBoxHolder getValholder() {
        return valholder;
    }

    public StateHolderBean() {
        super();
    }


    private class MyCheckBoxHolder extends HashMap<Object, Boolean> {
        @Override
        public Boolean get(Object key) {

            //System.out.println("getting key "+key+" val "+super.get(key));
            if (!this.containsKey(key) && this.containsKey("allselect")) {
                return super.get("allselect");
            }
            if (super.get(key) == null) {
                return false;
            }
            return super.get(key);
        }

        @Override
        public Boolean put(Object key, Boolean b) {
            System.out.println("Putting key: " + key + " val " + b);
            if (b != null && key != null) {

                return super.put(key, b);
            } else {
                return super.put(key, false);
            }
        }
    }
}


5. Создаем форму untitlead1.jspx с таблицей

6. Создаем view bean untitlead1B.java

7. Байндим таблицу t1 на t1 в untitlead1B
#{viewScope.untitlead1B.t1}

8. В форме у checkbox Attr ставим в Value
value="#{StateHolderBean.valholder[row.bindings.EmployeeId.inputValue]}"

и выставляем autoSubmit="true"

9. process


    public  String process() {
        HashMap checkval = (HashMap) getValueObject("#{InOperationsB.valholder}");
        Iterator it = checkval.entrySet().iterator();
        while (it.hasNext())  {
            Map.Entry pairs = (Map.Entry)it.next();
            System.out.println(pairs.getKey()+" : "+pairs.getValue());
        }
       return  null;
    }








  

вторник, 18 марта 2014 г.

Валидация поля номера счета


    public void onEdateToValidation(FacesContext facesContext, UIComponent uIComponent, Object object) {
            if (object != null)
            {
              String name = object.toString();
              //      String expression = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
              String expression = "[0-9]{1,20}";
              CharSequence inputStr = name;
              Pattern pattern = Pattern.compile(expression);
              Matcher matcher = pattern.matcher(inputStr);
              String msg = "Кореспондентский счет может содержать только цифры. Длинна поля - в точности 20 символов.";
              if ((matcher.matches() && inputStr.length() == 20) || name.isEmpty())
              {

              }
              else
              {
                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
              }
            }
    }

вторник, 25 февраля 2014 г.

ADF_FACES-60097- Oracle ADF

ADF_FACES-60097- Oracle ADF





Possible Causes- 
  • Mainly occurs in editable af:table
  • Problem with Primary Key
  • af:column's component's property is being used in any EL, inside or outside of table
        Exp- #{row.bindings.xyz.inputValue==0} 
  • Updateable primary key, and autosubmit true
Possible Solution -
  • Never use primary key as updateable column in af:table, if you have to use then remove primary key from Entity Object
  • Try to validate in RowImpl instead of Expression of Table
  • Surrogate Primary Key
  • Avoid LOV (List of Values) on primary key
  • Change Event Policy of af:table and iterator to none
    these solutions are not rules or conventions, you can only try , and may one of it will work for you

среда, 19 февраля 2014 г.

Invoking af:exportCollectionActionListener from Java

ADF_FACES-60003:Компонент с идентификатором r9:0:r1:0:pc1:t1 не зарегистрирован для активных данных

В общем, хуйня. Выгрузку в Эксель нужно писать на java  ручками.

----

Напоролся на ошибку ADF_FACES-60003:Компонент с идентификатором r9:0:r1:0:pc1:t1 не зарегистрирован для активных данных

Она возникла при попытке перейти на другую страницу, после того как на первой был выполнен вывод данных в Excel файл.

ссыль с инфой о вркароунд:
http://tompeez.wordpress.com/2011/11/16/jdev-11-1-2-1-0-dealing-with-adf_faces-60003-error-component-with-id-r11cb1-not-registered-for-active-data/


Из той же оперы:
Automatic PPR stops working in jdev 11.1.2.x when using an af:exportCollectionActionListener

ссылка ADFEMG-65

WORKAROUND: навесить partial triggers на кнопку вызова экспорта в Excel на таблицы где возникает ошибка.