【问题标题】:Output data from database in JSF page在 JSF 页面中从数据库输出数据
【发布时间】:2015-05-28 19:08:52
【问题描述】:

我正在使用 JSF 制作一个项目,并且我知道如何从我的视图中获取数据。我也知道如何使用 JDBC 连接器获取数据。以及如何从一些对象中将数据放入视图中,但我的问题是:

如何在 JSF 中直接从我的数据库中放入数据,例如人员列表,例如带有标签 <h:outputText value="#{}"/>

我找到了一些实例化对象的示例,但我没有找到来自数据库的数据的真实示例。

【问题讨论】:

  • 获得一本像样的 Java EE / JSF 书籍也不错。

标签: database jsf jsf-2


【解决方案1】:

JSF 只是一个用 Java 开发 Web 应用程序的 MVC 框架。 JSF 根本没有与任何数据源相关联。 JSF 将使用的唯一数据检索自:

  • 已作为属性存储在适当对象中的数据:HttpServletRequestHttpSessionServletContext
  • 托管 bean 中字段形式的请求/视图/会话/应用程序上下文,如果使用 CDI,则由装饰为 @ManagedBeans 或 @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;
    }
}

【讨论】:

  • 哇,你的回答对我很有帮助!!非常感谢。
猜你喜欢
  • 2014-08-27
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多