JSF / Primefaces选择一个导致问题的菜单

时间:2013-07-26 07:29:15

标签: java jsf primefaces xhtml runtime-error

我的index.xhtml看起来像

<p:selectOneMenu value="#{tBean.selectedChartType}"
                    converter="entityConverter">
                    <f:selectItems value="#{tBean.chartTypes}" var="chart"
                        itemLabel="#{chart}" />
</p:selectOneMenu>

这将显示来自托管bean的ENUM列表

private List<ChartType> chartTypes = Arrays.asList(ChartType.values());

My Enum

public enum ChartType {

    Line("line"), Spiral_Line("spline"), Area("area"), Spiral_Area("areaspline");
    private String code;

    private ChartType(String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}

现在,当我在浏览器上运行此.jsf时,有时会抛出错误:

XML Parsing Error: undefined entity
Location: http://xxxx/index.sf
Line Number 54, Column 733:

当我查看我找到的源代码时

&nbsp;
我猜是

造成这个错误。

我正在使用JSF 2.2.0Primefaces 3.5

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

faces-config.xml

中尝试以下配置
<converter>
    <converter-for-class>java.lang.Enum</converter-for-class>
    <converter-class>javax.faces.convert.EnumConverter</converter-class>
</converter>

    <p:selectOneMenu value="#{tBean.selectedChartType}">
        <f:selectItems value="#{tBean.chartTypes}" var="chart" itemLabel="#{chart}" />
    </p:selectOneMenu>

答案 1 :(得分:1)

帮助提问者有点晚了,但也许可以帮助某人:我遇到了同样的错误,我唯一可以解决的问题是将属性contentType="text/html"添加到我的<f:view>,如

<f:view contentType="text/html">
...
  <p:selectOneMenu>
    <f:selectItem itemLabel="test" itemValue="test"/>
  </p:selectOneMenu>
...
</f:view>

afaik会发生这种情况,因为p:selectOneMenu呈现&nbsp;且此字符不是xml实体。由于我的页面使用DOCTYPE XHTML 1.0 Transitional,因此会导致错误发生。

HTH。