Странное поведение h: dataTable - PullRequest
0 голосов
/ 15 июня 2011

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

Есть идеи, пожалуйста?

Ниже приведен метод получения значений базы данных.

public List<ProductBean> getPc() {

int i = 0;

Connection conn = null;
PreparedStatement pstmt = null;
// if(FacesContext.getCurrentInstance().getRenderResponse())
  List<ProductBean> pc= new ArrayList<ProductBean>();
 try {
    conn = getVConnection();
    String query = "select * from pictures";
    pstmt = conn.prepareStatement(query);
    //pstmt.setInt(1,this.id);
    rs = pstmt.executeQuery();
          while(rs.next())
                {
                    System.out.println(rs.getInt(1));
                    System.out.println(rs.getString(2));
 pc.add(i,newProductBean(rs.getInt(1),rs.getString(2)));
                    i++;
                }
          pstmt.close();
          rs.close();
          conn.close();


 }catch (Exception e)
            {
            e.printStackTrace();
            System.out.println("Error Data : " + e.getMessage());
            }

 return pc;

 } 

Ниже приводится страница jsf

<h:dataTable  styleClass="panelGridColums" value="#{tableBean.pc}" var="p" border="1" >
 <h:column>
<f:facet name="header">Product no</f:facet>
    <h:outputText value="#{p.productNo}"/>
 </h:column>

 <h:column>
<f:facet name="header">Product name</f:facet>
    <h:outputText value="#{p.p2name}"/>
 </h:column>
 </h:dataTable>

Ответы [ 2 ]

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

все вроде бы хорошо. Может быть, вы можете попробовать один из следующих пунктов:

  1. Пометьте ваш метод точкой останова, чтобы увидеть, действительно ли метод вызван
  2. Попробуйте System.out.println (rs.next ()), чтобы убедиться, что оно истинно и набор результатов заполнен.
1 голос
/ 15 июня 2011

Если вы не видите отпечатков полученных данных или ошибок, это просто означает, что таблица pictures пуста.Или, может быть, вы хотите, чтобы это был стол products.Или, может быть, вы не запускаете код, который, как вы думаете, вы запускаете.

Обратите внимание, что в опубликованном коде есть ошибка компиляции:

pc.add(i,newProductBean(rs.getInt(1),rs.getString(2)));

Но я предполагаю, что это была неосторожная опечатка при составлении вопроса.1010 * Не связанная с проблемой, выполнение задания взаимодействия с базой данных в методе получения - очень плохая идея.Получатель может вызываться несколько раз в течение жизни бина.Он должен возвращать только (предварительно заселенную) собственность, а не делать какую-либо дорогостоящую деловую работу, которая должна быть сделана единовременно.Переместите этот фрагмент кода в конструктор bean-компонентов, предпочтительно в виде отдельного вызова класса / метода.

public TableBean() throws SQLException {
    this.pc = productService.list();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...