更新
我发现dataGrid没有循环遍历列表中的列表的问题是XML代码方面的问题。现在,dataGrid正在读取List并循环遍历它,根据名称创建面板。现在问题似乎是访问此列表中的某些属性。
<p:dataGrid value="#{objList.objList2}" var="objList2" columns="1">
<p:panel id="obj2" header="#{objList2.name}" toggleable="true" collapsed="false">
<h:panelGrid columns="2" style="width: 100%" columnClasses="scenario-viewer-leftcolumn,scenario-viewer-rightcolumn">
<h:outputText value="Output Name:" />
<p:inputText value="#{objList2.objType}" styleClass="textBoxStyle"/>
<h:outputText value="Output Bool:" />
<p:selectBooleanCheckbox value="#{objList2.boolVar}"/>
</h:panelGrid>
</p:panel>
</p:dataGrid>
</p:panel>
</p:dataGrid>
当我尝试访问objList2下的变量时,给出了错误说明类obj2没有可读属性'objType'。我仔细检查了它确实有这个属性/变量并且它被初始化了。
这更令人奇怪的是,如果我在每个面板的标题中使用objList2.boolVar代替objList2.name,它会显示信息。这证明该属性存在并被初始化。为什么不能在inputText中工作?任何帮助将不胜感激。
ORIGINAL:
我正在使用PrimeFaces并尝试为我的UI创建一个xhtml表单。我试图将列表中的数据动态显示为dataGrid结构。我能够成功完成此操作,但我还需要显示第一个列表中的列表中的数据。
例如:
我在变量objList下有一个List,我用它作为我的第一个dataGrid。我能够遍历此列表并为每个对象创建面板,并为每个对象创建一些其他String数据。
<p:dataGrid value="#{scenarioTree.objList}" var="objList" columns="1">
<p:panel id="obj" header="#{objList.name}" toggleable="true" collapsed="true">
<h:panelGrid columns="2" style="width: 100%" columnClasses="scenario-viewer-leftcolumn,scenario-viewer-rightcolumn">
<h:outputText value="text:" />
<p:inputText value="#{objList.variable}" styleClass="textBoxStyle"/>
<h:outputText value="text2:" />
<p:inputText value="#{objList.variable2}" styleClass="textBoxStyle"/>
</h:panelGrid>
现在我希望能够创建第二个引用objList2的dataGrid,它位于objList1中。这样做虽然返回在UI中找不到记录,即使那里有一堆记录。
<p:dataGrid value="#{objList.objList2}" var="objList2" columns="1">
<p:panel id="obj2" header="#{objList2.name}" toggleable="true" collapsed="false">
</p:panel>
</p:dataGrid>
</p:panel>
</p:dataGrid>
这是PrimeFaces的错误还是我无法做到这一点?或者我做错了吗?
答案 0 :(得分:0)
每当我们谈论在xhtml中迭代列表时我们都有dataTable,dataGrid等,而且panelGrid也是becoz dataTable,而所有其他人都是panelGrid的子项(我们可以说这个becoz panelGrid也会形成表格,其他人也是我的意思从这种方式的孩子)所以在这种情况下尝试迭代panelGrid中的内部列表,因为你使用panelGrid和引用变量是列表所以内部jsf将理解如下:
objList.get(i).getVariable();//For the first row
但是根据你的代码,它是这样理解的:
objList.getVariable();
这根本不存在,所以它提供问题取出面板我没有发现它的使用和使用如下:
<p:panelGrid value="#{objList}" var="obj">
//Access properties inside that
</p:panelGrid>
如果您想要标题中的内容
,则可以使用<f:facet>
标记