物业'位置'在java.lang.String类型上找不到

时间:2015-03-10 14:27:56

标签: jsf jsf-2 primefaces el

我正在尝试输出一个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 }" />将呈现页面。但它只会渲染一次行。由于我添加了两条记录,所以它期望它呈现两行。

2 个答案:

答案 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变量中的一个。