【发布时间】:2016-08-16 08:38:01
【问题描述】:
更新:
我发现 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 下的变量时,出现错误提示 The class obj2 does not have a readable property 'objType'。我仔细检查了一下,它确实有这个属性/变量并且它被初始化了。
更奇怪的是,如果我在每个面板的标题中使用 objList2.boolVar 代替 objList2.name,它会很好地显示信息。这证明该属性存在并被初始化。为什么这在 inputText 中不起作用?任何帮助将不胜感激。
原文:
我正在使用 PrimeFaces 并尝试为我的 UI 创建一个 xhtml 表单。我正在尝试将列表中的数据动态显示到 dataGrid 结构中。我能够成功地做到这一点,但我还需要从第一个列表中的列表中显示数据。
例如:
我在变量 objList 下有一个列表,用于我的第一个 dataGrid。我能够遍历这个列表并为每个对象和每个对象的一些其他字符串数据创建面板。
<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>
现在我希望能够创建第二个 dataGrid,它引用位于 objList1 中的 objList2。这样做虽然返回 No records found in 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 的错误还是我无法做到这一点?还是我做错了?
【问题讨论】:
标签: java jsf primefaces datagrid xhtml