如何将数据放在来自ResultSet对象的jsp页面上的现有表中?

时间:2017-07-21 15:57:17

标签: java oracle jsp oracle-adf

嘿,我是使用oracle jdeveloper 12c的新手,我想从数据库中逐步将数据放入网页。

我创建了一个带有按钮和表格的jsp页面(通过拖放),并在数据库的ResultSet对象中包含数据。我使用ResultSetDatModel将数据从ResultSet放到我的桌子上,但是当我按下按钮时,所有内容都在按钮操作中正常工作,除了数据传输到表格,表格在网页上显示为空。

请帮我把我的java代码和输出屏幕截图放在下面。谢谢

package view;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;
import java.sql.Statement;

import javax.faces.model.ResultSetDataModel;

import oracle.adf.view.rich.component.rich.data.RichTable;
import oracle.adf.view.rich.component.rich.input.RichInputText;
import oracle.adf.view.rich.component.rich.output.RichOutputLabel;
import oracle.adf.view.rich.context.AdfFacesContext;

public class Method {
    private RichInputText txtbox;
    private RichOutputLabel lbl;
    private RichOutputLabel lbl2;
    private RichTable table;

    public Method() {
    }

    public String textChange() {

        AdfFacesContext adf = AdfFacesContext.getCurrentInstance();
        adf.addPartialTarget(table);
        try{
                    Class.forName("oracle.jdbc.OracleDriver");
                    Connection con =     DriverManager.getConnection("jdbc:oracle:thin:@Jaffer:1521:XE", "HR","hr");
                    Statement stmt = con.createStatement();
                    ResultSet rslt = stmt.executeQuery("select JOB_ID from         EMPLOYEES where LAST_NAME='King' AND EMAIL='SKING'");
                    rslt.next();
                    String str =rslt.getString(1).toString();
                    rslt = stmt.executeQuery("select * from JOBS where     JOB_ID='"+str+"'");
                    rslt.next();    
                    ResultSetDataModel dataModel=new ResultSetDataModel();
                    dataModel.setWrappedData(rslt);
                    table.setValue(dataModel);
                    //txtbox.setValue(rslt.getString(1).toString());
                }catch (Exception e){
                }
        return null;
    }

    public void setTxtbox(RichInputText txtbox) {
        this.txtbox = txtbox;
    }

    public RichInputText getTxtbox() {
        return txtbox;
    }

    public void setLbl(RichOutputLabel lbl) {
        this.lbl = lbl;
    }

    public RichOutputLabel getLbl() {
        return lbl;
    }

    public void setLbl2(RichOutputLabel lbl2) {
        this.lbl2 = lbl2;
    }

    public RichOutputLabel getLbl2() {
        return lbl2;
    }

    public void setTable(RichTable table) {
        this.table = table;
    }

    public RichTable getTable() {
        return table;
    }
}

output

2 个答案:

答案 0 :(得分:0)

您正在从错误的角度看问题:使用JDBC填写af:table。 您需要记住的是ADF是一个完整的堆栈开发框架,因此您需要使用ADF技术构建整个。

因此,您应该使用ADF业务组件而不是使用JDBC,您可以在其中基于SQL查询构建视图对象。有很多关于此的教程。

如果您只想使用ADF Rich Faces图层,而不使用ADF绑定或ADF业务组件,那么您将浪费时间。 ADF层紧密耦合。

答案 1 :(得分:0)

使用ADF绑定和ADF业务组件将数据库数据放入ADF Faces表会更容易。 这是一个基本教程: http://docs.oracle.com/cd/E53569_01/tutorials/tut_rich_app_alta/tut_rich_app_alta_1.html

如果您不想使用ADF Binding和ADF BC图层,那么您的托管bean需要创建一个返回集合的getter,然后您可以将ADF Faces表绑定到该集合。 这是您可以在ADF Faces组件演示代码中看到的内容: http://www.oracle.com/technetwork/developer-tools/adf/documentation/adf-faces-rc-demo-083799.html