Foros del Web » Programación para mayores de 30 ;) » Java »

Problema campo int J2ee

Estas en el tema de Problema campo int J2ee en el foro de Java en Foros del Web. holas!! Os cuento mi duda, es una tonteria, pero no se cual es la mejor manera de resolverla. Tengo un formulario en JSP en el ...
  #1 (permalink)  
Antiguo 15/11/2010, 12:45
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Problema campo int J2ee

holas!!

Os cuento mi duda, es una tonteria, pero no se cual es la mejor manera de resolverla. Tengo un formulario en JSP en el cual se introducen varios datos, algunos son numeros enteros y otros son cadenas de texto. El problema viene cuando dejo algun campo tipo int vacio, al recoger ese dato en el action me salta un error, esto no pasa con los q son tipo string. Como creeis q es la mejor manera de resolver esto? Os pongo un trozo de codigo para q os hagais una mejor idea:

Código PHP:
        <s:form method="post" action="datosPersonales.action">
            <
s:textfield name="nombre" label="Nombre" />
            <
s:textfield name="apellido" label="Apellidos" />
            <
s:textfield name="numExpediente" label="Num. Expediente" />
            <
s:textfield name="sexo" label="Sexo" />
            <
s:textfield name="dni" label="DNI" />
            <
s:textfield name="edad" label="edad" /> 
            <
s:textfield name="direccion" label="direccion" />
            <
s:textfield name="postal" label="Codigo Postal" />
            <
s:textfield name="ciudad" label="Ciudad" />
            <
s:textfield name="fijo" label="Telefono Fijo" />
            <
s:textfield name="movil" label="Telefono Movil" />
            <
s:textfield name="email" label="E-mail" />
            <
s:textarea  name="comentarios" cols="70" rows="2 label="Comentarios" />
            <s:submit    value="
Enviar Datos Personales" />
        </s:form> 
Solo dejo dos metodos para simplificar el problema, de ambos metodos siempre q dejo el campo vacio falla el q es tipo int

Código PHP:

public class DatosPersonales {
    
    private 
int numExpediente;
    private 
String nombre;
    private 
String apellido;
    private 
String sexo;
    private 
String dni;
    private 
int edad;
    private 
int postal;
    private 
String direccion;
    private 
String ciudad;
    private 
int fijo;
    private 
int movil;
    private 
String email;
    private 
String comentarios;
    
    
    
/*********CONSTRUCTORES*************/
    
    
public DatosPersonales() {
        
super();
    }

    

    public 
DatosPersonales(int numExpedienteString nombreString apellido,
            
String sexoString dniint edadint postalString direccion,
            
String ciudadint fijoint movilString emailString comentarios) {
        
super();
        
this.numExpediente numExpediente;
        
this.nombre nombre;
        
this.apellido apellido;
        
this.sexo sexo;
        
this.dni dni;
        
this.edad edad;
        
this.postal postal;
        
this.direccion direccion;
        
this.ciudad ciudad;
        
this.fijo fijo;
        
this.movil movil;
        
this.email email;
        
this.comentarios comentarios;
    }


    
/**********METODOS******************/
    



    
public String getCiudad() {
        return 
ciudad;
    }

    public 
void setCiudad(String ciudad) {
        
this.ciudad ciudad;
    }

    public 
int getFijo() {
        return 
fijo;
    }

    public 
void setFijo(int fijo) {
        
this.fijo fijo;
    }



  #2 (permalink)  
Antiguo 15/11/2010, 16:39
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

¿Te das cuenta de que estás utilizando Struts? ¿El código que has puesto de la clase DatosPersonales pretende ser un action?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 15/11/2010, 16:55
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

Buenas noches Xerelo,

jeje, sip, utilizo Struts 2, por intentar resumir el problema me he explicado bastante mal. La clase q mostraba es un JavaBean utilizado en este caso por la clase DatosPersonalesAction, te muestro con mas detalle el ejercicio:

Parte de la JSP:

Código PHP:


        
<s:form method="post" action="datosPersonales.action">
            <
s:textfield name="nombre" label="Nombre" />
            <
s:textfield name="apellido" label="Apellidos" />
            <
s:textfield name="numExpediente" label="Num. Expediente" />
            <
s:textfield name="sexo" label="Sexo" />
            <
s:textfield name="dni" label="DNI" />
            <
s:textfield name="edad" label="edad" /> 
            <
s:textfield name="direccion" label="direccion" />
            <
s:textfield name="postal" label="Codigo Postal" />
            <
s:textfield name="ciudad" label="Ciudad" />
            <
s:textfield name="fijo" label="Telefono Fijo" />
            <
s:textfield name="movil" label="Telefono Movil" />
            <
s:textfield name="email" label="E-mail" />
            <
s:textarea  name="comentarios" cols="70" rows="2" label="Comentarios" />
            <
s:submit    value="Enviar Datos Personales" />
        </
s:form


La clase action:

Código PHP:

package es
.pfc.struts2.actions;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import es.pfc.javabeans.DatosPersonales;
import es.pfc.modelo.dao.ModeloDatosPersonalesDAO;

public class 
DatosPersonalesAction extends ActionSupport implements ModelDriven<Object>{

    private 
DatosPersonales datosPersonales = new DatosPersonales();
    
    
    public 
Object getModel() {
        return 
datosPersonales;
    }

    public 
DatosPersonales getDatosPersonales() {
        return 
datosPersonales;
    }

    public 
void setDatosPersonales(DatosPersonales datosPersonales) {
        
this.datosPersonales datosPersonales;
    }


    public 
String agregarPaciente(){
        
        
ModeloDatosPersonalesDAO modeloDatosPersonalesDAO = new ModeloDatosPersonalesDAO();
        
        
modeloDatosPersonalesDAO.agregarPaciente(datosPersonales);
        
        
        return 
SUCCESS;
    }
    
    

y el JavaBean (omitiendo el resto de metodos y mostrando solo dos). Por ejemplo, si el campo ciudad (String) no lo relleno en la
JSP no pasa nada, si por el contrario el campo movil (int) no lo cumplimento me da un error.

Código PHP:

package es
.pfc.javabeans;

public class 
DatosPersonales {
    
    private 
int numExpediente 0;
    private 
String nombre;
    private 
String apellido;
    private 
String sexo;
    private 
String dni;
    private 
int edad 0;
    private 
int postal5;
    private 
String direccion;
    private 
String ciudad;
    private 
int fijo 0;
    private 
int movil 0;
    private 
String email;
    private 
String comentarios;
    
    
    
/*********CONSTRUCTORES*************/
    
    
public DatosPersonales() {
        
super();
    }

    

    public 
DatosPersonales(int numExpedienteString nombreString apellido,
            
String sexoString dniint edadint postalString direccion,
            
String ciudadint fijoint movilString emailString comentarios) {
        
super();
        
this.numExpediente numExpediente;
        
this.nombre nombre;
        
this.apellido apellido;
        
this.sexo sexo;
        
this.dni dni;
        
this.edad edad;
        
this.postal postal;
        
this.direccion direccion;
        
this.ciudad ciudad;
        
this.fijo fijo;
        
this.movil movil;
        
this.email email;
        
this.comentarios comentarios;
    }


    
/**********METODOS******************/
    
    
public String getCiudad() {
        return 
ciudad;
    }

    public 
void setCiudad(String ciudad) {
        
this.ciudad ciudad;
    }



    public 
int getMovil() {
        return 
movil;
    }

    public 
void setMovil(int movil) {
        
this.movil movil;
    }



Una posible solucion seria comprobar q se introduce un valor y en caso contrario mostrar un error, pero no me gusta, ya que el cliente desea poder dejar algunos campos vacios en funcion de la situacion. La otra idea es poner todas las variables como String, pero esta solucion es algo verdulera, q opinas??

Muchas Gracias

Última edición por fcojose2001; 15/11/2010 a las 17:01
  #4 (permalink)  
Antiguo 15/11/2010, 17:19
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

Eso está mejor

No hay problema, tienes dos opciones bastante sencillas, cambiar tus int por Integer, o añadir un valor por defecto a esos campos (en los textfield o como params de la action).

http://struts.apache.org/2.0.14/docs...opertyHandling

Cita:
Some properties cannot be set to null. Primitives like boolean and int cannot be null. If your action needs to or will accept null or blank values, use the object equivalents Boolean and Integer. Similarly, a blank string "" cannot be set on a primitive. At the time of writing, a blank string also cannot be set on a BigDecimal or BigInteger. Use server-side validation to prevent invalid values from being set on your properties (or handle the conversion errors appropriately).
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 15/11/2010, 17:41
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

Gracias por contestar tan rapido, esto me tiene estancado :(. He cambiado todos los int por Integer en el JavaBean, parece q todo iba bien ya que no salen errores a la hora de arrancar, sin embargo, si envio datos y los campos int (ahora Integer) siguen vacios la BBDD no da el error anterior pero sigue petando (me muestra el error de la exception). Puede ser por el siguiente bloque??:

Código PHP:

try {
            
            
//Apertura de la conexion
            
conexion super.getConnection();
            
            
//Creacion la instruccion
            
sentenciaString "INSERT INTO pacientes VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";

            
            
//Preparacion de la instruccion
            
insertar conexion.prepareStatement(sentenciaString);
            
                
insertar.setInt(1datosPersonales.getNumExpediente());
                
insertar.setString(2datosPersonales.getNombre());
                
insertar.setString(3datosPersonales.getApellido());
                
insertar.setString(4datosPersonales.getSexo());
                
insertar.setString(5datosPersonales.getDni());
                
insertar.setInt(6datosPersonales.getEdad());
                
insertar.setInt(7datosPersonales.getPostal());
                
insertar.setString(8datosPersonales.getDireccion());
                
insertar.setString(9datosPersonales.getCiudad());
                
insertar.setInt(10datosPersonales.getFijo());
                
insertar.setInt(11datosPersonales.getMovil());
                
insertar.setString(12datosPersonales.getEmail());
                
insertar.setString(13datosPersonales.getComentarios());
            
            
//Ejecucion de la instruccion
            
            
insertar.executeUpdate();
                
            
        } catch (
Exception e) {
            
System.out.println("Error en la instruccion agregarPaciente");
          } 
  #6 (permalink)  
Antiguo 16/11/2010, 03:13
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

Habría que ver qué error te está dando, pero supongo que será el mismo.

Si tu tienes un Integer que es null, y lo quieres convertir a int tienes el mismo problema de antes, un null no puede convertirse a int.

Tendrás que darle un valor, o hacer que ese campo sea sustituido en el preparedStatement por un null.

http://stackoverflow.com/questions/2...paredstatement
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 16/11/2010, 14:34
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

Hola tio!, me estoy empezando a desesperar un poquito con esto xD. He metido un System.out.println() para q me de el valor q recoge del campo int q no completo y me dice q 0, no null, pero la BBDD sigue petando si no lo relleno. Te muestro el error tal y como sale a ver si entiendes algo :(.

Código PHP:

ADVERTENCIA
Error setting expression 'edad' with value '[Ljava.lang.String;@391da0'
ognl.MethodFailedExceptionMethod "setEdad" failed for object es.pfc.javabeans.DatosPersonales@c7057c [java.lang.NoSuchMethodExceptiones.pfc.javabeans.DatosPersonales.setEdad([Ljava.lang.String;)]
    
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285)
    
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)
    
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
    
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
    
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)
    
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
    
at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:77)
    
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
    
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
    
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
    
at ognl.SimpleNode.setValue(SimpleNode.java:301)
    
at ognl.Ognl.setValue(Ognl.java:737)
    
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:209)
    
at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:173)
    
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:160)
    
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:151)
    
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:288)
    
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:199)
    
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
    
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
    
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
    
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
    
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
    
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    
at java.lang.Thread.run(Unknown Source)
Caused byjava.lang.NoSuchMethodExceptiones.pfc.javabeans.DatosPersonales.setEdad([Ljava.lang.String;)
    
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1226)
    ... 
64 more 
  #8 (permalink)  
Antiguo 16/11/2010, 17:13
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

No lo acabo de entender, dices que cambiaste los int por Integer, y que ahora puedes leer el valor del campo vacío, que aparece como 0. Sin embargo, el error que pones parece que es a la hora de pasar el valor del campo a tu Model

Cita:
ognl.MethodFailedException: Method "setEdad"
¿Cuándo lees ese valor?

¿Llega a ejecutarse el modeloDatosPersonalesDAO.agregarPaciente(datosPers onales); o el error te aparece antes?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #9 (permalink)  
Antiguo 16/11/2010, 17:35
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

A ver si consigo explicarme bien xD. Al parecer, el error aparece independientemente de q se ejecute la instruccion con la base de datos (aun comentando el bloque sigue dando el fallo), por lo que el problema debe de venir de antes. Como puedes ver, el PreparedStatement esta rodeado de un try-catch. Si el tipo de dato es int la instruccion funciona, almacena los datos en la BBDD pero me sale error de antes por consola. Si por el contrario pongo los datos como tipo Integer, me salta la excepcion que aparece en el bloque catch, no almacena nada en la base de datos y ademas me sale el mismo error.

Si lo apaño poniendo todos los datos como String, (aunque sean numericos) la aplicacion funciona perfectamente, pero prefiero evitar esta solucion.

Los datos los leo todos a la vez en el form q aparece en la jsp.

ah! lo q te comentaba del valor 0. Probé a dejar los campos int vacios del formulario y puse un system.out.println para q me mostrase por consola cual era el valor de esa variable si no almacenaba nada, y es 0. Por lo q un valor en ese caso si q tiene pero no se de donde me viene ese fallo
  #10 (permalink)  
Antiguo 16/11/2010, 18:04
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

Puedes probar con este codigo similar, el caso es el mismo. Si no completas el campo "Age" sale el error.

http://www.vaannila.com/examples/struts2/src/Example5.zip
  #11 (permalink)  
Antiguo 16/11/2010, 18:05
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

Entendido, vamos por partes.

int edad tiene un valor inicial 0 (independiente de si le pasas valor o no) porque

Cita:
private DatosPersonales datosPersonales = new DatosPersonales();
Los atributos de clase se inicializan automáticamente, int a 0, String a "", objetos a null...

Con respecto al error de Integer en el catch, como te decía en mi nota anterior, si tú tienes un Integer null y tratas de convertirlo en int, da error, y eso es lo que pasa en

Cita:
insertar.setInt(6, datosPersonales.getEdad());
Tienes dos opciones, darle valor 0 a edad para que no sea nulo o usar setNull si estás especialmente interesado en pasarle un valor null a la BDDDD, pero primero necesitas comprobar que realmente es null.

Del enlace que te puse
Cita:
// Does the equivalient of stmt.setInt(col, i) but preserves nullness.
protected static void setInt(PreparedStatement stmt, int col, Integer i)
throws SQLException
{
if (i == null)
stmt.setNull(col, java.sql.Types.INTEGER);
else
stmt.setInt(col, i);
}
http://download.oracle.com/javase/1....8int,%20int%29

Lo que podrías probar es a declarar en tu clase lo mismo que hacías con los int

private Integer numExpediente = 0; aunque me parece que te lo sobreescribirá con un null.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #12 (permalink)  
Antiguo 17/11/2010, 16:55
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

He reducido el codigo al maximo para simplificar el error, pero no se muy bien donde aplicar los cambios q me propones, te adjunto el codigo minimizado el cual presenta los mismos fallos:

JSP:

Código PHP:
<&#37;@taglib uri="/struts-tags" prefix="s" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd"
>

<
html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <
title>User Details</title>
    </
head>
    <
body>
        <
s:form action="UserAction" >
            <
s:textfield name="age" label="Age" />
            <
s:submit />
        </
s:form>
    </
body>
</
html
Action:

Código PHP:

package vaannila
;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


public class 
UserAction extends ActionSupport implements ModelDriven {

    private 
User user = new User();

    public 
UserAction() {
    }

    public 
Object getModel() {
        return 
user;
    }

    public 
String execute() {
        return 
SUCCESS;
    }

    public 
User getUser() {
        return 
user;
    }

    public 
void setUser(User user) {
        
this.user user;
    }

JavaBean:
Código PHP:


package vaannila
;


public class 
User {


    private 
Integer age 0;
    
    
    public 
Integer getAge() {
        return 
age;
    }

    public 
void setAge(Integer age) {
        
this.age age;
    }


Resultados:

Código PHP:


<%@taglib uri="/struts-tags" prefix="s" %>

<%@
page contentType="text/html" pageEncoding="UTF-8"%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd"
>

<
html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <
title>User Details</title>
    </
head>
    <
body>
        <
h2>User Details</h2>
        <
hr>
        
Age :<s:property value="age" /><br>
    </
body>
</
html
  #13 (permalink)  
Antiguo 17/11/2010, 17:35
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

Cita:
public class User {


private Integer age = 0;
Ya que esto no funcionó, prueba la otra opción.

Cita:
insertar.setInt(6, (datosPersonales.getEdad()==null?0:datosPersonales .getEdad()));
equivalente a

Cita:
if (datosPersonales.getEdad()==null){
datosPersonales.setEdad(0);
}
insertar.setInt(6,datosPersonales.getEdad());
De todas formas, deberías usar el debugger (que para algo están), así sabrías exactamente dónde se produce el error y qué valores tienes.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Última edición por Xerelo; 17/11/2010 a las 17:40
  #14 (permalink)  
Antiguo 17/11/2010, 17:46
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

ok, ahora lo pruebo y te comento. De todas maneras fijate en el codigo q te he puesto en el ultimo post, tan solo leo el form de la JSP y lo muestro, y aun asi se sigue produciendo el mismo error si dejo el campo vacio, por lo q el error no se produce en el insertar.setInt(...) sino antes.
  #15 (permalink)  
Antiguo 18/11/2010, 15:15
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema campo int J2ee

Pues no sé qué decirte, debes haber cambiado algo más y no te das cuenta o no estarás importando bien todas las librerías de struts2.

Acabo de bajarme y probar

Y a mí me funciona perfectamente, sin meter ningún valor si edad es un int se convierte a edad = 0, y si es Integer es null.

Bájate este proyecto y añádele lo de vaannila para probarlo.

http://apache.rediris.es//struts/exa...ank-2.0.14.war

Usé Eclipse, JRE6 y Tomcat 5.5
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #16 (permalink)  
Antiguo 22/11/2010, 15:14
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Problema campo int J2ee

Hola Xerelo.

Tienes razon, el problema viene relacionado con las bibliotecas. La cosa es q si intercambio los archivos desde la aplicacion q me pasaste a mi aplicacion da varios errores al cargar el servidor mi aplicacion.

Como desvinculo mi aplicación de las bibliotecas viejas y le adjunto las nuevas???

Última edición por fcojose2001; 22/11/2010 a las 17:31

Etiquetas: int, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:09.