2012-05-10 3 views
0

관리자가 목록에서 동영상을 선택하는 프로젝트 작업 중입니다. 그러면 동영상 데이터가 입력 텍스트에 표시되므로 관리자가 변경할 수 있으며 은 ajax으로 데이터베이스를 업데이트합니다.
올바른 데이터를 선택하여 inputTexts에 표시하기 위해 bean을 만들었습니다.
그게 전부입니다. 지금, 나는 Ajax jsf 두 값


선택 빈 업데이트 있습니다 .. inputText 내가 업데이트 쿼리가 두 번째 빈을 참조 할 수 있도록하는 방법을 잘 모릅니다.

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

}

업데이트 콩

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> 

,451,515,

그래서 내가 선택 빈의 값을 얻을 수 index.xhtml에서 원하는 업데이트 할 때 값에 InputText]를을 할당 콩을 업데이트

+0

두 번째 빈을 만들 필요가 없습니다. 동일한 빈을 사용하여이를 업데이트 할 수도 있습니다. – Addicted

+0

글쎄 난 실패하기 전에 그것을 시도했다. 나는 자바에 새로운 사람이다. 어쨌든 나는 조금 더 시도하고 약간의 코드를 보여줄 것이다. – Billior

답변

0

당신이 뭔가를해야 ...

로 전송됩니다 같은 빈 클래스의 변수 이름 -

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> 

당신이 보여주는 것처럼 당신의 목록을 보여주고, 이 블럭으로 바뀌면, 위에서 설명한 함수를 호출하여이 값을 데이터베이스로 직접 업데이트 할 것입니다.

의심의 여지가 없기를 바랍니다.

+0

두 번째 빈에 비슷한 코드가있다. 내가 생각하기에 문제가있는 것을 볼 수있다. 두 콩. 프로젝트를 실행하면 원하는 값이 출력됩니다. 그런 다음 입력 텍스트를 변경하고 브라우저 팝업 창을 닫습니다. serverError : class javax.faces.component.UpdateModelException mpla mpla value = "# {item.NAME} "속성 NAME은 java.lang.String 유형에 쓸 수 없습니다. – Billior

+0

브라우저가 창을 띄우는 방법 ... 팝업 할 코드를 제공 했습니까? 실제로는 다음 페이지에 오류가 표시됩니다. – Addicted

+0

왜 u r은 단지 두 개의 빈을 사용하여 업데이트하는 것이 좋지 않습니다. 하나의 빈만을 만들고 사용하십시오. – Addicted