我在p:dataTable中使用Primesfaces的Incell编辑。
在selectOneMenu中选择新的id时,我想更新同一行中的“name”字段,而不必等到用户按下要更新的name字段的ok复选标记。对象的名称属性在bean.idEdited(object)中更新。
我希望我可以使用f:ajax render =“name”更新其他字段,如下所示:
<h:form>
<p:dataTable var="object" value="#{bean.objects}"
<p:column>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{bean.objectId}" />
</f:facet>
<f:facet name="input">
<h:selectOneMenu value="#{bean.objectId}">
<f:selectItems value="#{bean.objectIds}" />
<f:ajax listener="#{bean.idEdited(object)}"
render="name" />
</h:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<h:outputText id="name" value="#{object.name}" />
</p:column>
</p:dataTable>
</h:form>
当我尝试render =“name”时,我得到了这个:
SEVERE: Error Rendering View[/logicalAddress.xhtml]
java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed
at org.apache.catalina.connector.Request.doGetSession(Request.java:2867)
...
使用 Primesfaces 2.2.1 Netbeans 7.0.1 JSF捆绑了Netbeans
想法,其他方式或救赎?
编辑:p:ajax呈现相同的结果。
答案 0 :(得分:1)
这种情况正在发生,因为当您调用ajax呈现页面时,该页面已经呈现。
提示:如果你使用primefaces,你也可以使用primefaces组件。同时升级到Primefaces 3.0.M4
以获得更好的实施。您还有一个primefaces selectOneMenu component
,您可以将primefaces ajax (p:ajax event="onchange")
与update
属性一起使用(更新整个表单)
答案 1 :(得分:0)
使用p更新整个表单:ajax肯定会更新名称字段,但在此之后该行将不再处于编辑模式。如果用户想要编辑同一行中的另一个单元格,则必须明确进入编辑模式