Я бы хотел добиться этого:
Внутри моей таблицы данных, в одной из ячеек, я могу вызвать действие, которое может обновить саму таблицу данных, нажав на команду linkLink.
Но то, что я испытал, это:
После запуска действия все работает, как задумано, но не хватает только одной вещи, то есть не обновляет данные.
Мой отрывок выглядит так для ссылки (да, я знаю, что использование @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 уже верны. Сбой только фазы просмотра обновления.
То, чего я хотел бы достичь, так же просто: щелкнув ссылку, сама ссылка обновится и исчезнет (из отображаемого атрибута)
Мне кажется, что из моих тестов вывод таков: любая запись, которая может вызвать действие и обновить сетку, содержащую эту запись, потерпит неудачу в фазе обновления.
Есть идеи, как решить эту проблему?
В любом случае, я хочу поделиться ответом после нажатия на ссылку «Отменить» из 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>
ОБНОВЛЕНИЕ:
Я понимаю, что в этом посте нет простого примера, и его было бы сложно протестировать и объяснить, поэтому я сделал простой пример, который выложил здесь .
Это нормально, если модератор считает, что это сообщение следует удалить, и сделайте это.
Спасибо!