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