Java 如何将新条目添加到从DB检索的列表中?

Java 如何将新条目添加到从DB检索的列表中?,java,list,arraylist,Java,List,Arraylist,我必须做什么才能通过打开输入字段在xhtml页面的列表中添加新条目(从DB中检索)? 我使用列表方法从sql db检索数据: @SuppressWarnings("serial") @ManagedBean(name= "user") @SessionScoped public class User implements Serializable{ static final String JDBC_DRIVER= "com.mysql.jdbc.Driver"; stat

我必须做什么才能通过打开输入字段在xhtml页面的列表中添加新条目(从DB中检索)?

我使用列表方法从sql db检索数据:

@SuppressWarnings("serial")
@ManagedBean(name= "user")
@SessionScoped
public class User implements Serializable{
      static final String JDBC_DRIVER= "com.mysql.jdbc.Driver";
      static final String DB_URL= "jdbc:mysql://localhost/updateTesting";
      static final String USER= "****";
      static final String PASS= "****";
      static Connection connection;
      static PreparedStatement prepStatement;
      static List<Values> valuesList;
      static Values allValues;

private static List<Values> getUsers(){
        try {
            databaseConnection();
        String SQL= "SELECT * FROM Registration";
        System.out.println("Retreive values from Registration table...");
        PreparedStatement prepStatement= connection.prepareStatement(SQL);
        valuesList= new ArrayList<>();
        ResultSet resultSet= prepStatement.executeQuery();
          boolean found= false;
          while(resultSet.next()== true){
              allValues= new Values();
              allValues.setId(resultSet.getInt("id"));
              allValues.setOrderNo(resultSet.getString("orderNo"));
              allValues.setProductName(resultSet.getString("productName"));
              allValues.setPrice(resultSet.getBigDecimal("price"));
              allValues.setQty(resultSet.getInt("qty"));
              valuesList.add(allValues);
               found= true;
          }
          resultSet.close();
          prepStatement.close();
           close(connection);
          if(found){
              return valuesList;
          }else {
            return null;
        }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            System.out.println("Error in getUsers()-->"+e.getMessage());
        }
        return (null);
    }

    public List<Values> getInformation(){
        return getUsers();
    }
xhtml页面:

<h:form>
 <center>
 <h:dataTable value="#{user.information}" var="x" border="1" id="table">
    <h:column>
     <f:facet name="header">
      <h:outputText value="Id"></h:outputText>
     </f:facet>
     <h:outputText value="#{x.id}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Order No"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.orderNo}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.orderNo}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Product name"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.productName}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.productName}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Price"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.price}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.price}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Quantity"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.qty}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.qty}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
 </h:dataTable>
 <h:commandButton value="AddNew" action="#{values.addNewUser}" update="table"/>
 </center>
</h:form>


您确实需要将代码量缩小到所需的绝对最小值,并更明确地说明您试图实现的内容和不起作用的内容。我无意涉过代码墙,因此我甚至不知道您的问题是JDBC方面的问题,还是UI方面的问题……我的问题是在查看页面上打开“输入字段”。@ZhadovetsIvan,您是说单击addNewUser,控件应返回到同一页,但具有空值和可编辑的输入字段,对吗?那么,你的情况如何?用户将返回屏幕,但输入字段不可编辑?是!我将DB数据检索到dataTable,但无法打开用于添加/编辑的输入字段!
<h:form>
 <center>
 <h:dataTable value="#{user.information}" var="x" border="1" id="table">
    <h:column>
     <f:facet name="header">
      <h:outputText value="Id"></h:outputText>
     </f:facet>
     <h:outputText value="#{x.id}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Order No"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.orderNo}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.orderNo}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Product name"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.productName}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.productName}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Price"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.price}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.price}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
   <h:column>
     <f:facet name="header">
      <h:outputText value="Quantity"></h:outputText>
     </f:facet>
     <h:inputText value="#{x.qty}" rendered="#{x.editable}"></h:inputText>
     <h:outputText value="#{x.qty}" rendered="#{not x.editable}"></h:outputText>
   </h:column>
 </h:dataTable>
 <h:commandButton value="AddNew" action="#{values.addNewUser}" update="table"/>
 </center>
</h:form>