0

我的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());

我的枚举

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

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

4

2 回答 2

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>
于 2013-07-26T08:05:36.190 回答
1

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

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

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

HTH。

于 2013-10-09T14:12:48.403 回答