JSF 2, Primesfaces: обновить ячейку при выборе selectOneMenu в редактировании Incell - PullRequest
0 голосов
/ 16 ноября 2011

Я использую редактирование Incell Primesfaces в ap: dataTable.

При выборе нового идентификатора в selectOneMenu, я бы хотел обновить поле '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

Идеи, другие способы или спасение?

edit: p: ajax отображает тот же результат.

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Это происходит потому, что когда вы вызываете ajax для отображения страницы, эта страница уже отображается.

СОВЕТ: Если вы используете простые лица, вы также можете использовать компоненты простых лиц, где это возможно. Также обновите до Primefaces 3.0.M4 для лучшей реализации. У вас также есть primefaces selectOneMenu component, и вы можете использовать primefaces ajax (p:ajax event="onchange") с атрибутом update (обновить всю форму)

0 голосов
/ 10 февраля 2012

обновление всей формы с помощью p: ajax, безусловно, обновляет поле имени, но после этого строка больше не будет находиться в режиме редактирования.Если пользователь хочет отредактировать другую ячейку в той же строке, он должен явно перейти в режим редактирования

...