Я бы хотел добиться этого:
Внутри моей таблицы данных, в одной из ячеек, я могу запустить действие, которое может обновить саму таблицу данных, щелкнув commandLink.
Но я испытал следующее:
После запуска действия все работает, как задумано, но не хватает только одного, а именно: он не обновляет таблицу данных.
Мой отрывок для ссылки выглядит следующим образом (да, я знаю, что использование @all не очень хорошая идея, но это сделано для целей тестирования):
<p:column>
<p:commandLink value="Undo"
process="@all"
action="#{tInputBean.undoRemoveRecord(rpbDetail)}"
update="@all"
rendered="#{tInputBean.isRemoveRecord(rpbDetail)}"
/>
</p:column>
И я протестировал дальше, поместив кнопку за пределами, внутри фасета заголовка таблицы данных, которая ничего не делает, а только обновляет сетку:
<p:commandButton value="Refresh Data" update="gridRPBDetails" />
Итак, шаги стали:
- После нажатия на ссылку сетка не обновляется.
- Нажатие кнопки обновления фактически обновляет сетку, ссылка исчезает (из-за отображаемого атрибута), что означает, что все фазы и состояния в моем JSF Bean уже верны. Сбой только на этапе обновления просмотра.
То, что я хотел бы достичь, очень просто: при нажатии на ссылку, сама ссылка обновляется и исчезает (из отображаемого атрибута)
Мне кажется, что из моих тестов сделан вывод: любая запись, которая может инициировать действие и обновлять сетку, содержащую эту запись, не удастся выполнить на этапе обновления.
Есть идеи по решению этой проблемы?
В любом случае, я хочу поделиться ответом после нажатия на ссылку «Отменить» в firebug:
<?xml version='1.0' encoding='UTF-8'?>
<partial-response><changes><update id="javax.faces.ViewState"><![CDATA[673421645734309925:-3805206326573204566]]></update></changes><extension primefacesCallbackParam="validationFailed">{"validationFailed":false}</extension></partial-response>
Я использую tomcat 7, и это мои зависимости:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
ОБНОВИТЬ :
Я понимаю, что в этом посте нет простого примера, и его будет сложно протестировать и объяснить, поэтому я сделал простой пример, который я опубликовал здесь.
Ничего страшного, если модератор считает, что этот пост следует удалить, и делает это.
Спасибо !