0

我正在做一个管理员从列表中选择电影的项目。然后电影的数据显示在inputTexts中,因此管理员可以更改它并onblur更新ajax数据库。
我创建了一个 bean,以便选择正确的数据并将它们显示在 inputTexts 中。
没关系。现在,我不知道如何允许inputText引用我有更新查询的第二个 bean..

更新
了 Select Bean。

package Beans;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author Vasilis
 */
@ManagedBean
@RequestScoped
public class Select {

Connection con;
Statement statement;
String query;
private List perInfoAll = new ArrayList();

public List getperInfoAll() {
    int i = 0;
    try {

        Class.forName("oracle.jdbc.driver.OracleDriver");

        con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "Bill", "1989");
        statement = con.createStatement();

        query = "SELECT NAME,SURNAME FROM AJAX";
        ResultSet resultset = statement.executeQuery(query);
        while (resultset.next()) {

            perInfoAll.add(i, new Select.perInfo(resultset.getString(1), resultset.getString(2)));
            i++;

        }

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

public class perInfo {
    String NAME;
    String SURNAME;
    public perInfo(String NAME, String SURNAME) {
        this.NAME = NAME;
        this.SURNAME = SURNAME;
    }
    public String getNAME() {
        return NAME;
    }
    public String getSURNAME() {
        return SURNAME;
    }
}

}

更新 Bean

package Beans;
import java.sql.*;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
/**
 *
 * @author Vasilis
 */
@ManagedBean
@RequestScoped

public class Update {

Statement statement;
Connection con;
String query1;
String query2;
ResultSet resultset1;
ResultSet resultset2;
String NewName;
String NewSurname;  

public void setNewSurname(String NewSurname) {
    this.NewSurname = NewSurname;
}

public void setNewName(String NewName) {
    this.NewName = NewName;
}

public String getNewSurname() {
    return NewSurname;
}

public String getNewName() {
    return NewName;
}

public void DatabaseConnection(String NewName) {

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (ClassNotFoundException error) {
        System.err.println("Error:Unable to load");
    }
    try {

        con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "BILL", "1989");
        statement = con.createStatement();
        query1 = "UPDATE AJAX SET NAME = ('" + NewName + "')";

        resultset1 = statement.executeQuery(query1);
        resultset1.next();



    } catch (SQLException error1) {
        System.err.println("Mistake");
    }

}

public String updateit() {
    DatabaseConnection(NewName);
    return "ok";
}

public void DatabaseConnection1(String NewSurname) {

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (ClassNotFoundException error) {
        System.err.println("Error:Unable to load");
    }
    try {

        con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "BILL", "1989");
        statement = con.createStatement();
        query2 = "UPDATE AJAX SET SURNAME = ('" + NewSurname + "')";

        resultset2 = statement.executeQuery(query2);
        resultset2.next();



    } catch (SQLException error1) {
        System.err.println("Mistake");
    }

}

public String updateit1() {
    DatabaseConnection1(NewSurname);
    return "ok";
}

}

index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0      Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
    <link rel="stylesheet" type="text/css" href="my.css" />
</h:head>
<h:body>
    <h:form>
        <h:inputText value="#{update.newName}" required="true" > 
            <f:ajax event="blur" render="@this" listener="#{update.updateit}" />        
        </h:inputText>  
        <h:inputText value="#{update.newSurname}" required="true" > 
            <f:ajax event="blur" render="@this" listener="#{update.updateit1}" />        
        </h:inputText>  
    </h:form>
</h:body>

所以我想在 index.xhtml 中从选择 bean 中获取值,当更新时,值将发送到更新 bean

4

1 回答 1

0

你应该做这样的事情......

inputText分配给bean 类中的变量名称为 -

private String myData; 
//getters and setters.

public void updateData(ActionEvent e)
{
    //put your query here to update to the database.
}

并在您的网络文件中这样做 -

<h:inputText value="#{bean.myData}">
    <a4j:support event="onblur" actionListener="#{bean.updateData}"/>
</h:inputText>

显示您的列表,并在onblur之后通过调用上述函数直接将此值更新到数据库。

希望它能消除你的疑问。

于 2012-05-10T10:17:54.907 回答