Как редактировать таблицу базы данных в JSF - PullRequest
2 голосов
/ 11 мая 2011

У меня есть класс bean-компонента с атрибутами id, firstName, lastName, имеющими открытые методы получения и установки, и метод updateEmployee.

Я использую следующую страницу jsf для получения значений таблицы базы данных.

Когда я нажимаю кнопку обновления, отображается страница успеха, но значения в базе данных не меняются.Кто-нибудь может мне объяснить причину, по которой вейлы не получают изменений в базе данных?

Заранее спасибо.

Страница JSF:

<h:dataTable value="#{tableBean.employeeList}" var="employee" border="1">
   <h:column>
          <f:facet name="header">First name</f:facet>
          <h:inputText value="#{employee.firstName}" />
   </h:column>

   <h:column>
          <f:facet name="header">Last name</f:facet>
          <h:inputText value="#{employee.lastName}" />
   </h:column>
</h:dataTable>
<h:commandButton value = "update" action="#{employee.updateEmployee}"/>

Employee.java:

public String updateEmployee(){
   String query = "update employee set firstName = ?,lastName = ? where id = 1";         
   pstmt = conn.prepareStatement(query);
   pstmt.setString(2,this.firstName);
   pstmt.setString(3,this.lastName); 
   pstmt.executeUpdate(); // execute update statement
   conn.commit();
   committed = true;
   return "success.xhtml";
   }catch (Exception e) {
       e.printStackTrace();
       return null;
   } finally {
      try{
         if (!committed) conn.rollback();
              pstmt.close();
          conn.close();
       }catch(Exception e){
            e.printStackTrace();
      }
    }

Ответы [ 2 ]

1 голос
/ 26 июня 2011

У вас есть только два параметра-заполнителя в запросе, но вы обратитесь к второму и третьему параметрам позже:

pstmt.setString(2,this.firstName);
pstmt.setString(3,this.lastName); 
1 голос
/ 11 мая 2011

Ваши значения автоматически связаны, если у вас есть соответствующие свойства в вашем компоненте поддержки.

Вы должны предоставить свои данные для обновления значений бина. Добавьте commandButton или commandLink в вашу форму следующим образом:

<h:form>
 <h:dataTable> ... </h:dataTable>
 <h:commandButton value="Submit" action="tableBean.actionMethod">
</h:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...