forEach 生成的数据表中的数据表 cellEditor 功能
Datatable cellEditor functionality in forEach generated Datatable
我正在尝试根据先前执行的 SQL-Query 的结果集动态生成可编辑的数据表。
根据哪些列具有恒定值,我试图不呈现它们。那部分代码工作得很好,一切都按照我希望的方式显示。
我的问题出在 cellEditor 上。我按如下方式生成数据表:
<p:dataTable ajax="true" var="mBT" value="#{stammdaten.bbvList}" id="meldeBearbeitungsTable" editable="true" editMode="cell" scrollable="true" scrollHeight="400" style="width:600px">
<p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/>
<c:forEach var="column" items="#{stammdaten.columns}">
<p:column headerText="#{column.header}">
<f:attribute name="myCol" value="#{column}" />
<span>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mBT[column.property]}"></h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{mBT[column.property]}">
<p:keyFilter regEx="/[0-9]/i"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</span>
</p:column>
</c:forEach>
</p:dataTable>
bbvList 是具有不同值的 bean 列表。
columns 是一个 bean 列表,用于标识 header-Texts 对应于各个变量。
所以现在问题本身:
这是当我点击它时 cellEditor 的样子:
Issue-Picture
因此,在该示例中,我尝试编辑其中包含值“8”的字段。 onCellEdit 被触发(System.out.println 正在控制台上打印)但我实际上无法更改相应字段中的值。
dataTable 的 forEach 初始化是否存在 cellEdit 问题?如果是,有没有办法解决它?否则我做错了什么?
因为只有 html-side 代码的一个特定组件没有正常工作,所以我暂时 post 不需要 java-Code。如果需要我也会添加。
希望有人能帮忙:)
原来属性 and/or 跨度是导致问题的地方。简单地删除它们解决了 cellEdit 的问题。
以下工作正常:
<p:dataTable ajax="true" var="mBT" value="#{stammdaten.bbvList}" id="meldeBearbeitungsTable" editable="true" editMode="cell" scrollable="true" scrollHeight="400" style="width:600px">
<p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/>
<c:forEach var="column" items="#{stammdaten.columns}">
<p:column headerText="#{column.header}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mBT[column.property]}"></h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{mBT[column.property]}">
<p:keyFilter regEx="/[0-9]/i"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
</c:forEach>
</p:dataTable>
我正在尝试根据先前执行的 SQL-Query 的结果集动态生成可编辑的数据表。 根据哪些列具有恒定值,我试图不呈现它们。那部分代码工作得很好,一切都按照我希望的方式显示。 我的问题出在 cellEditor 上。我按如下方式生成数据表:
<p:dataTable ajax="true" var="mBT" value="#{stammdaten.bbvList}" id="meldeBearbeitungsTable" editable="true" editMode="cell" scrollable="true" scrollHeight="400" style="width:600px">
<p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/>
<c:forEach var="column" items="#{stammdaten.columns}">
<p:column headerText="#{column.header}">
<f:attribute name="myCol" value="#{column}" />
<span>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mBT[column.property]}"></h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{mBT[column.property]}">
<p:keyFilter regEx="/[0-9]/i"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</span>
</p:column>
</c:forEach>
</p:dataTable>
bbvList 是具有不同值的 bean 列表。
columns 是一个 bean 列表,用于标识 header-Texts 对应于各个变量。
所以现在问题本身: 这是当我点击它时 cellEditor 的样子: Issue-Picture
因此,在该示例中,我尝试编辑其中包含值“8”的字段。 onCellEdit 被触发(System.out.println 正在控制台上打印)但我实际上无法更改相应字段中的值。
dataTable 的 forEach 初始化是否存在 cellEdit 问题?如果是,有没有办法解决它?否则我做错了什么?
因为只有 html-side 代码的一个特定组件没有正常工作,所以我暂时 post 不需要 java-Code。如果需要我也会添加。
希望有人能帮忙:)
原来属性 and/or 跨度是导致问题的地方。简单地删除它们解决了 cellEdit 的问题。 以下工作正常:
<p:dataTable ajax="true" var="mBT" value="#{stammdaten.bbvList}" id="meldeBearbeitungsTable" editable="true" editMode="cell" scrollable="true" scrollHeight="400" style="width:600px">
<p:ajax event="cellEdit" listener="#{stammdaten.onCellEdit}" update=":Mb:message"/>
<c:forEach var="column" items="#{stammdaten.columns}">
<p:column headerText="#{column.header}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{mBT[column.property]}"></h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{mBT[column.property]}">
<p:keyFilter regEx="/[0-9]/i"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
</c:forEach>
</p:dataTable>