我有一个primeface表,显示存储在List中的数据库中的数据,该数据库基于搜索来自 notificationList . 我希望在单击提交按钮后显示表格,但是在我添加渲染属性后,表格根本不显示 . 有人能告诉我_891987已尝试过两种方法来做到这一点 .

  • 使用渲染= #{not empty notificationSearchBean.results.notificationList} ,其中没有't work even though the list isn' t为空(我知道bc我在控制台中打印出结果)

  • 在这篇文章“Want to show a data table populated with data after a button click”中创建一个名为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>

和NotificationSearchBean:

@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;   
    }
}