Отрисованный атрибут для данных PrimeFaces не работает
У меня есть таблица простых лиц, которая показывает данные из базы данных, хранящейся в списке под названием notificationList
на основе поиска из. Я хочу, чтобы таблица отображалась после нажатия кнопки "Отправить", однако после добавления отображаемого атрибута таблица вообще не отображается. Может кто-нибудь сказать, что я делаю не так и как это исправить? Я попробовал два способа сделать это.
- Используя rendered =
#{not empty notificationSearchBean.results.notificationList}
который не сработал, хотя список не пустой (я знаю, что я напечатал результаты в консоли) - Создание логического значения с именем visible, как в этом посте " Хотите показать таблицу данных, заполненную данными после нажатия кнопки". Это также не отображает таблицу независимо от того, установлено ли значение visible в true или false. Странно то, что я попытался инициализировать visible с помощью true, а таблица все еще не отображается.
Это мой код для таблицы:
<h:panelGroup id = "table-wrapper" styleClass="searchResults">
<h:form id="result" >
<p:dataTable id="notTable" var="notifications" value="#{notificationSearchBean.results.notificationList}" row="15">
<p:column headerText="Notification No.">
<h:outputText value="#{notifications.notificationNo}"/>
</p:column>
<p:column headerText="Service">
<h:outputText value="#{notifications.srvce}"/>
</p:column>
<p:column headerText="Operation">
<h:outputText value="#{notifications.oprtn}"/>
</p:column>
<p:column headerText="Service Version">
<h:outputText value="#{notifications.srvceVrsn}"/>
</p:column>
<p:column headerText="Event Date">
<h:outputText value="#{notifications.evntDt}" >
<f:convertDateTime pattern="dd-MMM-yyyy 'at' HH:mm:ss.SSS" />
</h:outputText>
</p:column>
</p:dataTable>
</h:form>
</h:panelGroup>
И код для кнопки отправки:
<h:panelGrid align="center" columns="2">
<p:commandButton value="Start Search" action="#{notificationSearchBean.getAllNotificationsForQuery}" update="table-wrapper"/>
</h:panelGrid>
И поиск уведомлений Bean:
@ManagedBean(name = "notificationSearchBean" )
@SessionScoped
public class NotificationSearchBean implements Serializable {
private static final long serialVersionUID = 1L;
private TransactionsDao transactionsDao = (TransactionsDao)((Login)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("login")).getTransDao();
@Inject
private SearchCriteria search;
@Inject
private ResultSet results;
@PostConstruct
public void initialize() {
//setting attributes for search form
}
//getters and setters for search
public ResultSet getResults() {
return results;
}
public void setResults(ResultSet results) {
this.results = results;
}
public String getAllNotificationsForQuery() {
List<NotificationLogT> notifications=transactionsDao.getAllNotifications(this.search);
int temp=notifications.size();
this.results.setNotificationList(notifications);
if(temp==0){
//prints out not results return message
}
return "success";
}
}
А также класс ResultSet:
public class ResultSet implements Serializable {
private List<NotificationLogT> notificationList;
private boolean visible = false;
//private Integer dataSize;
public boolean isVisible() {
return visible;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
public List<NotificationLogT> getNotificationList() {
setVisible(true);
return notificationList;
}
public void setNotificationList(List<NotificationLogT> notificationList) {
this.notificationList = notificationList;
}
}