java - How can I retrieve the submitted values of a dynamically generated form? -


i need application allows final user create own form (drop checkboxes,inputtexts, etc) save form , user can open form , write values in elements of form print form. i'm working icefaces, , doing in managed bean:

javax.faces.component.uiviewroot root = facescontext.getcurrentinstance().getviewroot();             // find form clientid.             uicomponent = root.findcomponent("a");             uicomponent b = a.findcomponent("form");             uicomponent form = b.findcomponent("formulario");             list children = form.getchildren();  if (tipo.equalsignorecase("text")) {                 htmlinputtext inputtext = new htmlinputtext();                 inputtext.setid("text" + nro + (indice + 1));                 indice++;                 inputtext.setvalue("");                 inputtext.setsize(tamanio);                 children.add(inputtext);                 elemento = new elemento(tipo, inputtext.getid(), inputtext.getvalue().tostring(), inputtext.getsize());             } else if (tipo.equalsignorecase("textarea")) {                 htmlinputtextarea inputtextarea = new htmlinputtextarea();                 inputtextarea.setid("textarea" + nro + (indice + 1));                 indice++;                 inputtextarea.setvalue("");                 inputtextarea.setcols(ancho);                 inputtextarea.setrows(alto);                 children.add(inputtextarea);                 elemento = new elemento(tipo, inputtextarea.getid(), inputtextarea.getvalue().tostring(), (inputtextarea.getrows() * 10) + inputtextarea.getcols());             } else if (tipo.equalsignorecase("outputtext")) {                 htmloutputtext outputtext = new htmloutputtext();                 outputtext.setid("outputtext" + nro + (indice + 1));                 indice++;                 outputtext.setvalue(valor);                 children.add(outputtext);                 elemento = new elemento(tipo, outputtext.getid(), outputtext.getvalue().tostring(), 0);             } else if (tipo.equalsignorecase("table")) {                 htmldatatable table = new htmldatatable();                 table.setid("table" + nro + (indice + 1));                 indice++;                 // (int k = 0; k < filas; k++) {                 (int j = 0; j < columnas; j++) {                     htmlcolumn column = new htmlcolumn();                     column.setid("c" + j);                     (int = 0; < filas; i++) {                         htmlinputtext inputcolumn = new htmlinputtext();                         inputcolumn.setid("f" + i);                         inputcolumn.setvalue("");                         column.getchildren().add(inputcolumn);                     }                     table.getchildren().add(column);                 }                 // }                  table.setvalue("");                 table.setrows(filas);                 table.setcolnumber(columnas);                 table.setresizable(true);                 children.add(table);                 elemento = new elemento(tipo, table.getid(), table.getvalue().tostring(), (table.getrows() * 10 + table.getcolnumber()));             } else if (tipo.equalsignorecase("checkbox")) {                 htmlselectbooleancheckbox checkbox = new htmlselectbooleancheckbox();                 checkbox.setid("checkbox" + nro + (indice + 1));                 indice++;                 checkbox.setvalue("on");                 children.add(checkbox);                 elemento = new elemento(tipo, checkbox.getid(), checkbox.getvalue().tostring(), 0);             } else if (tipo.equalsignorecase("radio")) {                 htmlselectoneradio radio = new htmlselectoneradio();                 radio.setid("radio" + nro + (indice + 1));                 indice++;                 uiselectitems items = new uiselectitems();                 arraylist arr = new arraylist();                 htmlinputtext inputradio = new htmlinputtext();                 inputradio.setvalue(" ");                 arr.add(new selectitem(new integer(0), inputradio.getvalue().tostring()));                 items.setvalue(arr);                 radio.setvalue("on");                 radio.getchildren().add(items);                 children.add(radio);                 elemento = new elemento(tipo, radio.getid(), radio.getvalue().tostring(), 0);             } else if (tipo.equalsignorecase("panel")) {                 htmlpanelgrid panel = new htmlpanelgrid();                 panel.setid("panel" + nro + (indice + 1));                 indice++;                 children.add(panel);                 elemento = new elemento(tipo, panel.getid(), "", 0);             }             elementosformulario.add(elemento); 

i can add elements in form save in db can recreate form don't know how retrieve submitted values every element.

bind values map<string, object> property.

e.g.

private map<string, object> values = new hashmap<string, object>(); // +getter 

with

inputtext.setvalueexpression("value", createvalueexpression("#{bean.values['" + field.getname() + "']}", string.class)); 

you can obtain submitted values in action method values.get(field.getname()).

see also:


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -