在JSF页面中从数据库输出数据



我正在使用JSF创建一个项目,并且我知道如何从我的视图中获取数据。我还知道如何使用JDBC连接器获取数据。还有如何把数据放到视图中,从一些对象,但我的问题是:

如何把数据直接从我的数据库,例如一个人的列表,在JSF中,例如与标记<h:outputText value="#{}"/> ?

我发现了一些实例化对象的例子,但我没有发现一个真实的例子,从数据库的数据。

JSF只是一个用Java开发web应用程序的MVC框架。JSF根本不关联任何数据源。JSF将使用的唯一数据是从:

中检索的。
  • 已存储在适当对象中的数据作为属性:HttpServletRequestHttpSessionServletContext
  • 请求/视图/会话/应用程序上下文,以托管bean中字段的形式存在,如果使用CDI,则由装饰为@ManagedBean s或@Named的类识别。根据托管bean的作用域,这些字段的数据将作为属性存储在上一节中提到的对象中。

知道了这一点,那么您唯一需要担心的就是填充托管bean中的字段。你可以用来自数据库、web服务或任何你想要的数据源的传入数据填充它们。

例如,如果您希望/需要填充数据来预处理请求,您可以执行以下操作:

@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;
    }
}

相关内容

  • 没有找到相关文章

最新更新