Я использую <rich:datatable>
для отображения данных из List<Map<String, String>>
(фактически, этот список содержит только один Map<String, String>
). отображает данные в строке и показывает кнопку редактирования и удаления рядом со строкой.Обновление содержимого, чтобы они исчезли после нажатия кнопки удаления
Когда я нажимаю delete button
, я очищаю регистр от List
и из базы данных. Я хотел бы, когда я нажимаю delete button
, чтобы не отображать содержимое с datatable
и отключить edit
и . Вот DataTable код:
<rich:dataTable value="#{searchAuthDetailController.finalResults}"
id="table" var="result">
<c:forEach items="#{searchAuthDetailController.variableNames}" var="vname">
<rich:column>
<f:facet name="header">#{vname}</f:facet>
#{result[vname]}
</rich:column>
</c:forEach>
<rich:column>
<h:commandButton action="EditAuthor" value="Edit"
disabled="#{searchAuthDetailController.editBtDisabled}">
<f:setPropertyActionListener target="#{editAuthController.selectedAuthor}"
value="#{searchAuthDetailController.selectedAuthor}"/>
</h:commandButton>
</rich:column>
<rich:column>
<a4j:commandButton value="Delete" disabled="#{searchAuthDetailController.deleteBtDisabled}"
action="#{searchAuthDetailController.removeSelectedAuthor()}" render="table"/>
</rich:column>
</rich:dataTable>
Также есть List<String>
отображения некоторых ссылок ниже datatable
. Я бы хотел, чтобы эти ссылки и текст выше не появлялись, после нажатия кнопки удаления.
<h:outputText value="#{searchAuthDetailController.linksLabel}" />
<br />
<a4j:repeat value="#{searchAuthDetailController.sameasListToShow}" var="uri" >
<a href="#{uri}">#{uri}</a>
<br />
</a4j:repeat>
Я использую 2 переменные, называемые deleteBtDisabled
и editBtDisabled
в качестве значения из disabled property
с помощью кнопок. В remove() (код ниже) я установил эти переменные в true
, и я очистил List<Map<String, String>>
, переменные имена List
, List
отображаемых ссылок и linkslabel
. Вот remove()
:
public void removeSelectedAuthor() {
this.authMapper.remove(bdModel, this.selectedAuthor);
this.variableNames.clear();
this.editBtDisabled = true;
this.deleteBtDisabled = true;
this.sameasListToShow.clear();
this.linksLabel = "";
}
Кроме того, delete button
имеет render
свойство набора в datatable's
ид.
Со всеми этими кодами, когда я нажимаю кнопку «Удалить», только содержимое из данных исчезает, но кнопки продолжают работать, а список ссылок продолжается.
Как я могу решить эту проблему?
Спасибо! Не могли бы вы привести мне пример с и с данными (не обязательно быть богатыми). Я не уверен, как его использовать. –
Luciane
Я обновил свой ответ. Я тестировал его с помощью JSF 2.2, Mojarra 2.2 на Tomcat 7.x –
Спасибо за пример! Это точная конфигурация, которую я использую. Посмотрите, для выполнения и рендеринга свойств f: ajax. Я использую имя тегов? - Вы использовали @form из-за тега h: form? – Luciane