我是Java和servlets的新手,我已经按照本教程https://netbeans.org/kb/docs/web/jsf20-crud.html进行了操作。我正在使用我自己的数据库,其中包括2个表,一个用于用户,另一个用于汽车。我需要能够显示表的内容,具体取决于哪些车可用(即使用sql命令)。我怎样才能做到这一点?当前视图显示了所有内容。
另外,我需要创建一个登录屏幕,在其中我根据数据库检查用户。如何从xhtml页面执行sql命令?
列表页面如下,但我需要显示已勾选某个字段的汽车。我必须编辑什么?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<ui:composition template="/template.xhtml">
<ui:define name="title">
<h:outputText value="#{bundle.ListCarsTitle}"></h:outputText>
</ui:define>
<ui:define name="body">
<h:form styleClass="jsfcrud_list_form">
<h:panelGroup id="messagePanel" layout="block">
<h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
</h:panelGroup>
<h:outputText escape="false" value="#{bundle.ListCarsEmpty}" rendered="#{carsController.items.rowCount == 0}"/>
<h:panelGroup rendered="#{carsController.items.rowCount > 0}">
<h:outputText value="#{carsController.pagination.pageFirstItem + 1}..#{carsController.pagination.pageLastItem + 1}/#{carsController.pagination.itemsCount}"/>
<h:commandLink action="#{carsController.previous}" value="#{bundle.Previous} #{carsController.pagination.pageSize}" rendered="#{carsController.pagination.hasPreviousPage}"/>
<h:commandLink action="#{carsController.next}" value="#{bundle.Next} #{carsController.pagination.pageSize}" rendered="#{carsController.pagination.hasNextPage}"/>
<h:dataTable value="#{carsController.items}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListCarsTitle_carId}"/>
</f:facet>
<h:outputText value="#{item.carId}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListCarsTitle_isRented}"/>
</f:facet>
<h:outputText value="#{item.isRented}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListCarsTitle_rentalDate}"/>
</f:facet>
<h:outputText value="#{item.rentalDate}">
<f:convertDateTime pattern="MM/dd/yyyy" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListCarsTitle_rentedDueDate}"/>
</f:facet>
<h:outputText value="#{item.rentedDueDate}">
<f:convertDateTime pattern="MM/dd/yyyy" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListCarsTitle_paid}"/>
</f:facet>
<h:outputText value="#{item.paid}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListCarsTitle_rentedToUserId}"/>
</f:facet>
<h:outputText value="#{item.rentedToUserId}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value=" "/>
</f:facet>
<h:commandLink action="#{carsController.prepareView}" value="#{bundle.ListCarsViewLink}"/>
<h:outputText value=" "/>
<h:commandLink action="#{carsController.prepareEdit}" value="#{bundle.ListCarsEditLink}"/>
<h:outputText value=" "/>
<h:commandLink action="#{carsController.destroy}" value="#{bundle.ListCarsDestroyLink}"/>
</h:column>
</h:dataTable>
</h:panelGroup>
<br />
<h:commandLink action="#{carsController.prepareCreate}" value="#{bundle.ListCarsCreateLink}"/>
<br />
<br />
<h:link outcome="/index" value="#{bundle.ListCarsIndexLink}"/>
</h:form>
</ui:define>
</ui:composition>