簡體   English   中英

如何在按鈕上單擊以顯示數據庫中的數據

[英]how to display the data from database on a button click in java jsf

<f:view>
        <h:form>
            <h:panelGrid>
                <f:facet name="header">
                    <h:outputText value="Student Mark List"/>
                </f:facet>
                <h:column>
                    <h:outputText value="Student Number : "></h:outputText>
                    <h:inputText value="#{stuBean.stuNumber}"/>
                </h:column>
                <h:column>
                    <h:commandButton id = "getStuMarkList" value="Get Mark List" action="#{stuBean.listOfMarks}" >
                    </h:commandButton> </h:column>
            </h:panelGrid>                          
            <h:panelGrid  bgcolor="#9AC8E6" width="100%">
              <h:dataTable id="datatable" value="#{stuBean.marksList}" var="marksList">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Maths Marks" />
                        </f:facet>
                        <h:inputText value="#{marksList.mMarks}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="English Marks" />
                        </f:facet>
                        <h:inputText value="#{marksList.eMarks}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Physics Marks" />
                        </f:facet>
                        <h:inputText value="#{marksList.pMarks}" > </h:inputText>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText style=""value="Social Marks" />
                        </f:facet>
                        <h:inputText value="#{marksList.sMarks}" > </h:inputText>
                    </h:column>
                </h:dataTable>
            </h:panelGrid>
        </h:form>
    </f:view>

StudentBean.java

    //... getters and setters

public String listOfMarks(){
    student.marksListFromDb(stuNum);
    return null;
}

private List marksList= new ArrayList();

public List getMarksList() {       
    return marksList;
}

請檢查我上面的代碼,其中我試圖在單擊按鈕(listOfMarks)時從數據庫獲取值,並將其顯示在數據表中。 使用上面的代碼並沒有獲取數據。如果我在某些地方做錯了,請幫我...

一些一般的事情:

commandButton中的操作方法應返回voidString 字符串用於導航。 如果要重新加載同一頁面,則返回null

您正在將markList的getter方法與action方法混合在一起。

您應該有一個操作方法,例如fillMarkList()來填充列表,返回一個空String並重新加載當前頁面, 並且您應該有一個getter方法getMarkList()來返回dataTable的列表:

public String fillMarkList() {
   // fill the list:
   student.markListFromDb(stuNum);
   // reload current page:
   return null;
}

public List getMarkList() {
   return markList();
}

然后,您的按鈕應調用fillMarkList()作為操作方法:

<h:commandButton id="getStuMarkList" 
                 value="Get Mark List" 
                 action="#{stuBean.fillMarkList}" />

更新:剛注意到您使用h:panelGrid 我嘗試了您的版本,它呈現為正確的表格。 但是我認為正確的用法是沒有專欄。 您必須將列號定義為h:panelGrid的屬性,並將包含的元素簡單地放在網格內:

<h:panelGrid columns="3">
   <f:facet name="header">
       <h:outputText value="Student Mark List"/>
   </f:facet>
   <h:outputText value="Student Number : "></h:outputText>
   <h:inputText value="#{stuBean.stuNumber}"/>
   <h:commandButton id = "getStuMarkList" value="Get Mark List" 
                     action="#{stuBean.listOfMarks}" >
   </h:commandButton> </h:column>
</h:panelGrid>   

盡管“請檢查我的代碼”在這里通常不起作用,但我發現了一件事情:

public List getMarkList() {
 student.markListFromDb(stuNum);
 return markList;
}

您沒有在此處將任何內容放入markList,是嗎?

編輯:還請注意,它們在執行方面相當相等: #{stuBean.getMarkList}#{stuBean.markList}因為后者很可能會被框架轉換為StudentBean.getMarkList() ,就像#{stuBean.getMarkList}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM