Я прочитал этот урок .Я пытаюсь, но я получаю ошибку.У нас есть Mysql и netbean 7.0.1.Таблица с именем: "customer", столбцы: "id int, имя varchar, адрес электронной почты varchar, описание varchar".Я использовал Hibernate для отображения таблицы.Это мой класс модели:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import domain.Customer;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*
* @author xuanhung2401
*/
public class CustomerModel {
Session session = null;
public CustomerModel(){
session = HibernateUtil.getSessionFactory().getCurrentSession();
}
public List<Customer> getAllCustomer(int startId, int endId){
List<Customer> list = null;
try{
session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction ts = session.beginTransaction();
Query query = session.createQuery("from Customer");
list = (List<Customer>)query.list();
}
catch(Exception ex){
ex.printStackTrace();
}
return list;
}
public Customer getById(int id){
Customer c = new Customer();
try{
Transaction ts = session.beginTransaction();
Query query = session.createQuery("from Customer as c where c.id = "+id );
c = (Customer)query.uniqueResult();
}catch(Exception ex){
ex.printStackTrace();
}
return c;
}
public boolean updateCustomer(Customer c){
try{
Transaction ts = session.beginTransaction();
session.update(c);
ts.commit();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
public boolean addCustomer(Customer c){
try{
Transaction ts = session.beginTransaction();
session.save(c);
ts.commit();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
public boolean deleteCustomer(Customer c){
try{
Transaction ts = session.beginTransaction();
session.delete(c);
ts.commit();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
}
Это мой контроллер:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controller;
import domain.Customer;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.view.facelets.FaceletContext;
import model.CustomerModel;
/**
*
* @author xuanhung2401
*/
@ManagedBean
@SessionScoped
public class CustomerController {
CustomerModel model;
DataModel customers;
Customer currentCustomer;
/** Creates a new instance of CustomerController */
public CustomerController() {
model = new CustomerModel();
}
public DataModel getCustomers(){
if (customers==null) {
customers = new ListDataModel(model.getAllCustomer(1, 3));
}
return customers;
}
public void recreateModel(){
customers = null;
}
public Customer getCurrentCustomer(){
if (currentCustomer==null) {
currentCustomer = new Customer();
}
return currentCustomer;
}
public String editCustomer(){
int id = 0;
try {
id = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")) ;
currentCustomer = model.getById(id);
if (currentCustomer!=null) {
return "edit";
}
}catch(Exception ex){
}
return "myTemplateClient";
}
public String editProcess(){
try{
model.updateCustomer(currentCustomer);
recreateModel();
}catch(Exception ex){
}
return "myTemplateClient";
}
public String addCustomer(){
currentCustomer = new Customer();
return "add";
}
public String addProcess(){
if (currentCustomer!=null) {
model.addCustomer(currentCustomer);
currentCustomer = new Customer();
recreateModel();
}
return "myTemplateClient";
}
public String deleteCustomer(){
int id = 0;
id = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")) ;
currentCustomer = model.getById(id);
model.deleteCustomer(currentCustomer);
recreateModel();
return "myTemplateClient";
}
public String goIndex(){
return "myTemplateClient";
}
public String prepareView(){
currentCustomer = (Customer) customers.getRowData();
if (currentCustomer !=null) {
return "details";
}
return "myTemplateClient";
}
}
Как видите, у нас есть 4 вида: myTemplateClient.xhtml, add.xhtml, edit.xhtml,details.xhtml.я перемещаюсь с помощью команды "return" viewname ";".Проблема:
Адресная строка не совпадает с адресом страницы, которую я просматриваю.Пример: я читаю myTemplateClient.xhtml, но адресная строка: localhost: 8080 / iDo_Hibernate / Faces / details.xhtml (это должно быть: localhost: 8080 / iDo_Hibernate / Face / MyTemplateClient.xhtml).После этого, когда я перехожу к add.xhtml, адресная строка имеет вид: localhost: 8080 / iDo_Hibernate / Faces / myTemplateClient.xhtml.
После добавления нового клиента он перенаправляется на «myTemplateClientmsgstr "страница (это страница указателя, она показывает всех клиентов) с адресной строкой: localhost: 8080 / iDo_Hibernate /faces / add.xhtml.Теперь, когда я обновляю свой браузер, он добавляет больше клиентов с той же информацией.Я пытаюсь удалить добавленный объект, но ошибка все равно.
Пожалуйста, помогите мне исправить эти ошибки (Простите, потому что мой английский не очень хороший).Спасибо за чтение.