Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf DynaForm Primefaces扩展收集提交的数据_Jsf_Primefaces_Primefaces Extensions - Fatal编程技术网

Jsf DynaForm Primefaces扩展收集提交的数据

Jsf DynaForm Primefaces扩展收集提交的数据,jsf,primefaces,primefaces-extensions,Jsf,Primefaces,Primefaces Extensions,我在Primefaces扩展中使用DynaForm。我已经生成了一个动态表单,但问题是如何从控制器恢复提交的数据 以下是我生成表单的方式: 这是控制器端 model = new DynaFormModel(); DynaFormRow row; allfieldMessageList=getAllfieldMessageList(); for(FilledMessageField f:allfieldMessageList) {

我在Primefaces扩展中使用DynaForm。我已经生成了一个动态表单,但问题是如何从控制器恢复提交的数据

以下是我生成表单的方式:

这是控制器端

    model = new DynaFormModel();  

    DynaFormRow row;

    allfieldMessageList=getAllfieldMessageList();

    for(FilledMessageField f:allfieldMessageList)
    {
        // 1. row  
        row = model.createRegularRow();  
        FilledMessageField fmf=new FilledMessageField();
        DynaFormLabel label11 = row.addLabel(fmf.getField().getName());  
        DynaFormControl control12 = row.addControl(fmf, "input");  
        label11.setForControl(control12);  
    }
这是网页的一面:

<h:form id="addMessageIDForm" rendered="true">
        <pe:dynaForm id="dynaForm" value="#{messageValuesController.model}" 
            var="data" widgetVar="dynaFormWidget" >     
            <pe:dynaFormControl type="input" for="txt" >
            <p:panelGrid columns="2">
                <p:inputText id="txt" value="#{data.value}"
                    required="#{data.required}" />
                    </p:panelGrid>
            </pe:dynaFormControl>
        </pe:dynaForm>
       <p:commandButton value="Submit" action="#{messageValuesController.saveMessageTemplate}" process="dynaForm"  />  
</h:form>

请问有人知道这件事吗

谢谢。

如所述,类似这样的方法可以实现以下目的:

List<FilledMessageField> fields = new ArrayList<FilledMessageField>();  
for (DynaFormControl dynaFormControl : model.getControls())  
    if (dynaFormControl.getData() instanceof FilledMessageField)
        fields.add((FilledMessageField) dynaFormControl.getData());
List fields=new ArrayList();
对于(DynaFormControl DynaFormControl:model.getControls())
if(dynaFormControl.getData()instanceof FilledMessageField)
add((FilledMessageField)dynaFormControl.getData());
但是出于好奇,如果不使用
f
,为什么要迭代
FilledMessageField f:allfieldMessageList
?在填充DynaForm控件时,您也可以只获取一个
列表
,并将模型项添加到其中,这样您就不需要使用非常昂贵的
instanceof
检查将其从模型中拉出

注意:

对我来说,将
DynaForm
用于纯输入表单似乎是一种过火的行为。你可以使用一个简单的
,里面有
s,使用你的
字段
列表作为你的支持集合。

谢谢你的回答,关于变量的事情,这只是一个复制错误。我想我发现了我的问题,每当我提交表单时,就调用后构造函数,并重新初始化我的模型,即使AJAXI打算在我得到这个输入的时候添加其他输入类型。但是这个控制器已经在@ViewScoped上了。谢谢你,我解决了这个问题,我刚刚删除了postconstruct函数。。。