Вы можете очистить свойство управляемого компонента, которое не должно быть перекрашено при рендеринге ответа. Это можно сделать, используя код, аналогичный приведенному ниже фрагменту:
private String name;
public String getName(){return name;}
public void setName(String name){this.name=name};
public String submit()
{
//do some processing
...
// blank out the value of the name property
name = null;
// send the user back to the same page.
return null;
}
. Причина текущего поведения может быть найдена в том, как обрабатываются процессы выполнения JSF. Все запросы JSF к просмотру обрабатываются в соответствии с стандартным запросом-ответом-ответами JSF lifecyle . В соответствии с lifecyle содержимое управляемого компонента обновляется со значением из запроса (т. Е. Устанавливается значение DataForm.Name
) до выполнения события приложения (DataForm.submit
). Когда страница отображается в фазе Render Response, текущее значение компонента используется для визуализации представления обратно пользователю. Если значение не будет изменено в событии приложения, значение всегда будет равно тому, которое применяется с запросом.
Привет, мой друг, попробуй так:
<div class="table-responsive" id="yourInputSearchValue" style="display:none">
<table class="display dataTable" id="exampleTable" >
//Your columns here
</table>
</div>
Javascript:
$('#yourSubmit').on('click',function() {
console.log($('#yourInputSearchValue').val());
id = $.trim($('#yourInputSearchValue').val().replace(/\s+/g, ' '));
console.log(id);
$('#theDivthatContainsTheTable').hide();
exampleTable =$('#exampleTable').DataTable();
if ($.fn.DataTable.isDataTable("#exampleTable")) {
exampleTable.destroy();
$('#exampleTable tbody').remove();
}//this help when you search again
});
Надеюсь, это поможет
Добавьте приведенные ниже коды в ПОСЛЕ ТОЛЬКО ПОСЛЕ ИНИЦИАЛИЗАЦИОННОЙ ТАБЛИЦЫ
if ($(".dataTables_empty").length) {
$(".dataTables_wrapper").hide(); }
Я сделал это, чтобы решить проблему
<script type="text/javascript"> $(document).ready(function() {
$('#example').DataTable(); if ($(".dataTables_empty").length) { $(".dataTables_wrapper").hide();} } ); </script>