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())
.
Comments
Post a Comment