繁体   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