2013-07-26 36 views
0

index.xhtml看起来像JSF/Primefaces选择一个菜单导致问题

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

这从我的托管bean

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; 
    } 
} 

呈现ENUM列表现在,当我运行这在浏览器上的.jsf有时会抛出错误:

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

当我看源代码,我发现

&nbsp; 

这是造成这个错误,我猜。

我使用JSF 2.2.0Primefaces 3.5

可能有人请帮助我这个问题?

+0

可能重复的[JSF和类型安全](http://stackoverflow.com/questions/16433250/jsf-and-type-safety) – skuntsel

+0

@skuntsel它怎么可能重复? – Makky

+0

这是一个肯定的错误投票,但我不能不幸取消它。 – skuntsel

回答

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。

+0

这是我为了使它工作而修复的修复程序!! 1 – Makky

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> 
+0

你认为这个错误是因为转换器? – Makky

+0

作为你的页面,它是转换器的原因 – CycDemo

+0

我会给它一个去,但我不认为所以我们必须注册这个enumconverter作为JSF有alraydy内置转换器枚举。我认为我的错误是对ENUM使用任何转换器选择一个菜单。 – Makky