我使用的代码类似于这个精简的示例:
<h:form id="form">
<ace:dataTable id="carTable"
value="#{dataTableRowEditing.cars}"
var="car">
<ace:column id="name" headerText="Name">
<ace:cellEditor>
<f:facet name="output">
<h:outputText id="nameCell" value="#{car.name}"/>
</f:facet>
<f:facet name="input">
<h:inputText id="nameInput" value="#{car.name}"/>
</f:facet>
</ace:cellEditor>
</ace:column>
<ace:column id="options" headerText="Options">
<ace:rowEditor id="editor"/>
</ace:column>
</ace:dataTable>
</h:form>
在加载JSF页面时,我得到了以下错误:
com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException SEVERE: Error Rendering View[/index.xhtml]
在搜索这个错误时,我找到的一个解决方案是确保我有input
和output
的两个<f:facet>
元素,但我已经有了这些元素。
对我有效的解决方案是在<html>
标记中仔细检查我的xmlns
属性。我有以下内容:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/composite"
>
然而,xmlns:f="http://java.sun.com/jsf/composite"
是不正确的。它应该是xmlns:f="http://java.sun.com/jsf/core
。校正后的<html>
标签如下所示:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ace="http://www.icefaces.org/icefaces/components"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
>
修复此问题后,错误得到解决,编辑功能正常工作。