2014-04-20 1 views
0

I 메인 제목에 나와있는 요소 나는이 오류를 사용하여 객체를 저장하려고 :저장하는 방법을 데이터 4.2.6 + Struts2 + 넷빈즈 8.0 + 톰캣 8.0.3.0

target is null for setProperty(null, "tiposClientesIdTipoCliente", [Ljava.lang.String;@2504d0cd) 

우선 나는 최대 절전 모드 사용 입수이 Action 클래스가 있습니다

public class Cliente implements java.io.Serializable { 

private Integer idCliente; 
private int tiposClientesIdTipoCliente; 
private String nombreCliente; 
private int telefonoCliente; 

public Cliente() { 
} 

public Cliente(int tiposClientesIdTipoCliente, String nombreCliente, int telefonoCliente) { 
    this.tiposClientesIdTipoCliente = tiposClientesIdTipoCliente; 
    this.nombreCliente = nombreCliente; 
    this.telefonoCliente = telefonoCliente; 
} 

public Integer getIdCliente() { 
    return this.idCliente; 
} 

public void setIdCliente(Integer idCliente) { 
    this.idCliente = idCliente; 
} 

public int getTiposClientesIdTipoCliente() { 
    return this.tiposClientesIdTipoCliente; 
} 

public void setTiposClientesIdTipoCliente(int tiposClientesIdTipoCliente) { 
    this.tiposClientesIdTipoCliente = tiposClientesIdTipoCliente; 
} 

public String getNombreCliente() { 
    return this.nombreCliente; 
} 

public void setNombreCliente(String nombreCliente) { 
    this.nombreCliente = nombreCliente; 
} 

public int getTelefonoCliente() { 
    return this.telefonoCliente; 
} 

public void setTelefonoCliente(int telefonoCliente) { 
    this.telefonoCliente = telefonoCliente; 
} 

} 

둘째,이 내 DAO 인터페이스입니다 :

package dao; 

import entities.Cliente; 
import java.util.ArrayList; 


public interface ClienteDAO { 

public boolean agrego(Cliente cliente); 
public boolean borrar(Cliente cliente); 
public ArrayList<Cliente> listar(); 
} 

셋째, 나는 이것을있어 내 DAO를 s의 구현 : 넷째

package dao; 

import entities.Cliente; 
import java.util.ArrayList; 
import org.hibernate.Session; 
import org.hibernate.Transaction; 


public class ClienteImpl implements ClienteDAO { 

Transaction transaction = null; 
Session session; 

public boolean agrego(Cliente cliente) { 
    try 
    { 
     session = HibernateUtil.getSessionFactory().getCurrentSession(); 
     transaction=session.beginTransaction(); 
     //registrar o actualizar 
     session.saveOrUpdate(cliente); 
     transaction.commit(); 
     return true; 
    } 
    catch(Exception e) 
    { 
     if(transaction!=null) 
      transaction.rollback(); 

     return false; 
    } 
} 

public boolean borrar(Cliente cliente) { 
    try 
    { 
     session = HibernateUtil.getSessionFactory().getCurrentSession(); 
     transaction=session.beginTransaction(); 
     session.delete(cliente); 
     transaction.commit(); 
     return true; 
    } 
    catch(Exception e) 
    { 
     if(transaction!=null) 
      transaction.rollback(); 

     return false; 
    } 
} 

public ArrayList<Cliente> listar() { 
    try 
    { 
     Session session; 
     Transaction transaction; 
     session = HibernateUtil.getSessionFactory().getCurrentSession(); 
     transaction=session.beginTransaction(); 
     return (ArrayList<Cliente>)session.createQuery("from Cliente").list(); 
    } 
    catch(Exception e) 
    { 
     return null; 
    } 
} 
} 

, 이것은 내 컨트롤러 :

package controllers; 

import com.opensymphony.xwork2.ModelDriven; 
import dao.ClienteImpl; 
import dao.ClienteDAO; 
import entities.Cliente; 
import java.util.ArrayList; 


public class ClienteController implements ModelDriven<Cliente> { 

Cliente cliente = new Cliente();// 
ArrayList<Cliente> listaclientes = new ArrayList(); 
ClienteDAO clienteDAO; 
String msg = ""; 

public ClienteController() { 
    clienteDAO = new ClienteImpl(); 
} 

public Cliente getModel() { 
    return cliente; 
} 

public String agrego() { 
    clienteDAO.agrego(cliente); 
    listaclientes = clienteDAO.listar(); 
    return "exito"; 
} 

public String borrar() { 
    clienteDAO.borrar(cliente); 
    listaclientes = clienteDAO.listar(); 
    return "exito"; 
} 

public String listar() { 
    listaclientes = clienteDAO.listar(); 
    return "exito"; 
} 

public Cliente getDatos() { 
    return cliente; 
} 

public void setDatos(Cliente datos) { 
    this.cliente = datos; 
} 

public ArrayList<Cliente> getListaclientes() { 
    return listaclientes; 
} 

public String getMsg() { 
    return msg; 
} 
} 

여섯째, 이것은 내가 새로운 오브젝트/데이터를 추가하는 데 사용하는 형태이다 :

<s:form action="agregaCliente"> 
     <s:textfield label="Tipo" name="cliente.tiposClientesIdTipoCliente" /> 
     <s:textfield label="Nombre" name="cliente.nombreCliente" /> 
     <s:textfield label="Teléfono" name="cliente.telefonoCliente" /> 
     <s:submit value="registrar/actualizar" /> 
    </s:form> 

및 마지막으로, 이것은 struts.xml 파일에서의 나의 액션이다 :

내가 누락 된 부분을 모르겠다 ... 동일한 DB에서 데이터를로드하고 표시 할 수 있지만 추가/업데이트하거나 삭제할 수 없다 ...

답변

0

ModelDriven 모델을 푸시 한 경우 양식 스택을 직접 매핑 할 수있는 값 스택 맨 위에 추가합니다. 당신이 OGNL 루트 옆에 작업 속성에 액세스하려면

<s:textfield label="Tipo" name="tiposClientesIdTipoCliente" /> 
    <s:textfield label="Nombre" name="nombreCliente" /> 
    <s:textfield label="Teléfono" name="telefonoCliente" /> 

This 대답이 사용될 수있다.

+0

답장을 보내 주셔서 감사합니다. 나는 어쨌든 내가 코드에서 빠진 것을 발견했다. (컨트롤러에서 setter와 getter는 어디서 잘못 됐는지). – Carlos