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

Struts - Error con formulario

Estas en el tema de Struts - Error con formulario en el foro de Java en Foros del Web. Hola que tal? tengo un problema con una aplicacion para facebook q hice en struts, al probarla en mi servidor local funciona perfecto, pero el ...
  #1 (permalink)  
Antiguo 14/04/2010, 13:29
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años
Puntos: 1
Struts - Error con formulario

Hola que tal? tengo un problema con una aplicacion para facebook q hice en struts, al probarla en mi servidor local funciona perfecto, pero el problema surge cuando subo mi aplicacion al hosting q contrate.
El mismo tiene soporte para tomcat y todo.

El tema es el siguiente, tengo un formulario al cual, en el momento de darle el submit, me da un error "Se recibió el código de error HTTP 404 mientras se cargaba http://...etc"

He revisado el struts-config.xml y esta correcto segun mi entender, ademas si estaria mal no deberia andar ni si quiera en mi servidor local.
El formulario se llama "contactos", cuando salta el error se aparece en la siguiente direccion "http://apps.facebook.com/miaplicacion/contactos.do"
Otro dato que puedo aportar es que en el formulario no llene todos los datos necesarios para pasar el validate() por lo tanto deberia regresar a la web mostrandome un mensaje de error, es decir que se estanca en el "ActionForm" o que nunca llega a el.

Dejo esa parte del struts-config.xml por si acaso:
Código PHP:
<form-beans>
        <
form-bean name="contactos" type="Controladores.Form.contactos"/>
</
form-beans>

<
action-mappings>
        <
action input="/index.jsp" name="contactos" path="/contactos" scope="session" type="Controladores.Action.contactos">
            <
forward name="retorno" path="/home_redirect.jsp"/>
        </
action>
        <
action path="/Welcome" forward="/welcomeStruts.jsp"/>
</
action-mappings
Agradeceria algun tipo de ayuda.
Saludos!
  #2 (permalink)  
Antiguo 14/04/2010, 14:22
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 9 meses
Puntos: 10
Respuesta: Struts - Error con formulario

Hola....

Si quieres que pase por el metodo validate() tendras que poner ese atributo a tu etiqueta <action

Código PHP:
<form-beans
        <
form-bean name="contactos" type="Controladores.Form.contactos"/> 
</
form-beans

<
action-mappings
        <
action input="/index.jsp" name="contactos" path="/contactos" scope="session" type="Controladores.Action.contactos" [B]validate="true"[/B]> 
            <
forward name="retorno" path="/home_redirect.jsp"/> 
        </
action
        <
action path="/Welcome" forward="/welcomeStruts.jsp"/> 
</
action-mappings
Quiero pensar que tienes una clase que se llama contactos.java

Saludos!
  #3 (permalink)  
Antiguo 14/04/2010, 14:33
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años
Puntos: 1
Respuesta: Struts - Error con formulario

Si si, tengo esa clase, de hecho insisto, cuando pruebo en el servidor local funciona sin problemas, el tema esta cuando lo pruebo en mi hosting.
Es decir, en mi servidor local pasa sin problemas por el validate, pero creo que el error esta en que no encuentra esa accion, pero no estoy seguro porque pasa eso.
Saludos!
  #4 (permalink)  
Antiguo 14/04/2010, 14:39
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 9 meses
Puntos: 10
Respuesta: Struts - Error con formulario

Pero no tienes el validate="true" en tu etiqueta <action

Intenta viendo el codigo fuente de la jsp que te muestra el formulario, despues busca la etiqueta <form y en el atributo action debes de tener algo asi:

Código PHP:
<form name="contactos" action="/miaplicacion/contactos.do">
............
</
form
Saludos!
  #5 (permalink)  
Antiguo 14/04/2010, 18:15
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años
Puntos: 1
Respuesta: Struts - Error con formulario

Agregue el validate="true" pero esta todo igual, de hecho sin el validate en mi servidor local igual pasa por el validate, pero por las dudas lo probe.
Otra cosa, yo para crear los formularios utilizo:
<html:form action="contactos">
si agrego un parametro name salta error, porq este tag de struts no lleva name, probe con todas estas alternativas pero ninguna funciono:
<html:form action="contactos.do">
<html:form action="aplicacion/contactos">
<html:form action="/aplicacion/contactos">
<html:form action="aplicacion/contactos.do">
<html:form action="/aplicacion/contactos.do">

La verdad estoy bastante perdido.
Saludos!
  #6 (permalink)  
Antiguo 14/04/2010, 21:38
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años
Puntos: 1
Respuesta: Struts - Error con formulario

He descubierto que el error debe estar en algo de la configuracion de mi hosting o en algun path.
Para confirmar que el problema era del hosting hice esta simple aplicacion.

Este es mi index.jsp
Código PHP:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ 
taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ 
taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<
html:form action="contactos">
  <
html:text property="nombre" value="" maxlength="12"></html:text><br />
  <
html:submit value="Enviar" property="enviar"></html:submit><br/>
  <
html:errors property="name"/><br />

  <%
       if(
request.getSession().getAttribute("ingreso") != null)
       {
            
out.println((String)request.getSession().getAttribute("ingreso"));
       }
       else { 
out.println("no ingreso nada men"); }
  %>
</
html:form
este mi ActionForm Bean, "contactos":
Código:
import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class contactos extends org.apache.struts.action.ActionForm {
    
    private String nombre;
    
    public contactos() { super(); }

    public String getNombre() { return nombre; }

    public void setNombre(String nombre) { this.nombre = nombre; }

    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (getNombre() == null || getNombre().length() < 1) {
            errors.add("name", new ActionMessage("error.name.required"));  }
        return errors;
    }
}

este mi ActionForm, "contactos":
Código:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class contactos extends org.apache.struts.action.Action {
    
   private Controladores.Form.contactos formulario;

   public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        formulario=(Controladores.Form.contactos) form;
        request.getSession().setAttribute("ingreso", formulario.getNombre());
        return mapping.getInputForward();
    }
}
mi struts-config.xml
Código PHP:
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans>
        <form-bean name="contactos" type="Controladores.Form.contactos"/>
    </form-beans>
    
    <global-exceptions>
    
    </global-exceptions>

    <global-forwards>
        <forward name="welcome"  path="/Welcome.do"/>
    </global-forwards>

    <action-mappings>
        <action input="/index.jsp" name="contactos" path="/contactos" scope="session" type="Controladores.Action.contactos"/>
        <action path="/Welcome" forward="/welcomeStruts.jsp"/>
    </action-mappings>
    
    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

    <message-resources parameter="com/myapp/struts/ApplicationResource"/>    
   
    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />      
        <set-property property="moduleAware" value="true" />
    </plug-in>
    
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    </plug-in>
  
</struts-config>
Al probar el codigo en el servidor local funciona sin problemas, el tema esta al subirlo a mi hosting, nose si tengo que acomodar algo de algun path en el struts-config.xml la verdad ya no se donde buscar.
Dentro de mi hosting ubico los archivos dentro del directorio "/public_html/miaplicacion"
El error surge cuando lleno el campo de texto y presiono el boton enviar, me salta el siguiente error:
Código:
Not Found
The requested URL /adictosms/contactos.do;jsessionid=27BEEDDB2EE19BE78DFE2901528783E6 was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
  #7 (permalink)  
Antiguo 20/04/2010, 08:36
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Struts - Error con formulario

Aparentemente el error está ahi..

;jsessionid=27BEEDDB2EE19BE78DFE2901528783E6

Seguro que debe ir punto y coma? tengo la sensación de que ese parámetro lo deberías pasar de otra forma.
  #8 (permalink)  
Antiguo 20/04/2010, 16:55
 
Fecha de Ingreso: abril-2009
Mensajes: 53
Antigüedad: 15 años
Puntos: 1
Respuesta: Struts - Error con formulario

La verdad es que es medio raro lo q pasa, lo pude solucionar agregando esto al web.xml antes de cerrar el </web-app>
Código:
<taglib>
		<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
	 </taglib>

	  <taglib>
		<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
	  </taglib>

	  <taglib>
		<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
	  </taglib>

	  <taglib>
		<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
		<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
	  </taglib>
aparentemente no cargaba los taglibs, de todas maneras es raro pq sin tocar nada luego de un rato de haber hecho los cambios la aplicacion empezo a funcionar.
Quizas sea algun tipo de problema del hosting, pero bueno, mientras siga funcionando lo dejamos asi, aunque voy a seguir investigando porq no me quiero quedar con la duda.
Muchas gracias por todo.
Saludos!
  #9 (permalink)  
Antiguo 23/04/2010, 10:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Struts - Error con formulario

Ójala y me pudieran auxiliar
Error en un formulario.
En el phph tengo esto:
<?php

$name = $_POST['name'];
$state = $_POST['state'];
$mail = $_POST['mail'];
$subject = $_POST['subject'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$message = "Este mensaje fue enviado por " . $name . ", $state " . $mail . ", $subject " \r\n";
$message .= "Su e-mail es: " . $mail . " \r\n";
$message .= "Message: " . $_POST['message'] . " \r\n";
$message .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'Contacto desde pagina web';

mail($para, $asunto, utf8_decode($mensaje), $header);

echo 'Mensaje enviado correctamente';
?>


Y me da este mensaje de error ya en la web
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/html/enviar.php on line 13

Parse error: parse error, unexpected T_STRING in /var/www/html/enviar.php on line 13

y otra pregunta como lo pruebo para ver si ya funciona
[email protected]

Etiquetas: struts, formulario
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 10:29.