我正在尝试输出一个primefaces数据表。
<p:dataTable var="bi" value="#{ bowlingInfo.hallMastaren} ">
<p:column headerText="Position">
<h:outputText value="#{bi.position }" />
</p:column>
</p:dataTable>
但它不会识别它看起来的数据,并抛出以下异常。
javax.servlet.ServletException:/test.xhtml @ 13,47 value =“#{bi.position}”:在类型java.lang.String上找不到属性'position'
我正在使用primefaces 5.1。
删除<h:outputText value="#{bi.position }" />
将呈现页面。但它只会渲染一次行。由于我添加了两条记录,所以它期望它呈现两行。
答案 0 :(得分:5)
空格在值表达式中很重要。仔细查看value
属性:
<p:dataTable var="bi" value="#{ bowlingInfo.hallMastaren} ">
<p:column headerText="Position">
<h:outputText value="#{bi.position }" />
</p:column>
</p:dataTable>
这绝对不对。 }
之后的尾随空格导致了这一切,因为它最终被强制为String
。就像你在普通Java中做的那样:
Object dataTableValue = bowlingInfo.getHallMastaren() + " ";
摆脱值表达式中的空格。
<p:dataTable var="bi" value="#{bowlingInfo.hallMastaren}">
<p:column headerText="Position">
<h:outputText value="#{bi.position}" />
</p:column>
</p:dataTable>
答案 1 :(得分:-1)
使用提供的代码,这不应该发生。但是,请检查您是否未使用bi
或其他方式在页面上的其他位置为<c:set>
分配值。如果您这样做,只需重命名两个bi
变量中的一个。