2015-05-28 3 views
-2

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

Как поместить данные непосредственно из моей базы данных, например, списка людей, в JSF, например, с тегом <h:outputText value="#{}"/>?

Я нашел несколько примеров с объектами-экземплярами, но я не нашел реального примера с данными из БД.

+0

Getting руку приличного Java EE/JSF книги не были бы плохим идея. – BalusC

ответ

1

JSF - это просто среда MVC для разработки веб-приложений на Java. JSF не связывается с каким-либо источником данных вообще. Только JSF данные будут использовать извлекаются из:

  • данных уже хранятся в соответствующем объекте в качестве атрибута: HttpServletRequest, HttpSession или ServletContext.
  • Контекст request/view/session/application в виде полей в управляемых компонентах, признанных классами, которые были присвоены @ManagedBean s или @Named при использовании CDI. Данные этих полей будут храниться как атрибуты в объектах, упомянутых в разделе выше, в зависимости от области действия управляемого компонента.

Зная это, вам остается только заполнить поля в управляемых компонентах. Вы можете заполнить их входящими данными из базы данных, с веб-службы или любого источника данных, который вы имеете в виду.

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

@ManagedBean 
@ViewScoped 
public class SomeBean { 
    List<Entity> entityList; 
    @PostConstruct 
    public void init() { 
     SomeService someService = new SomeService(); 
     entityList = someService.findEntityList(); 
    } 
    //getters and setters for the list... 
} 

//as you can see, this class is just pure Java 
//you may use other frameworks if you want/need 
public class SomeService { 
    public List<Entity> findEntityList() { 
     String sql = "SELECT field1, field2... FROM table"; 
     List<Entity> entityList = new ArrayList<>(); 
     try (Connection con = ...; //retrieve your connection somehow 
      PreparedStatement pstmt = con.prepareStatement(sql)) { 
      ResultSet rs = pstmt.executeQuery(); 
      while (rs.next()) { 
       Entity entity = new Entity(); 
       entity.setField1(rs.getString("field1")); 
       entity.setField2(rs.getString("field2")); 
       //... 
       entityList.add(entity); 
      } 
     } catch (Exception e) { 
      //handle exception ... 
      e.printStackTrace(); 
     } 
     return entityList; 
    } 
} 
+0

Вау, ваш ответ действительно помогает мне !! Огромное спасибо. – Benobab