Problema com <html:text>[RESOLVIDO]

Bom dia GUJeiros.

Estou o seguinte problema/dúvida.

Estou estudando struts 1(pq é o padrão que a empresa na qual estou utiliza) e estava fazendo alguns testes para entender melhor. Resolvi então estudar as Taglibs do struts e fiz um cadastro simples.

Fiz a Action, ActionForm, DAO, Bean e JSP.
O meu problema, creio eu, esteja no JSP.
Quando realizo o cadastro, todos os dados vão para o banco como nulo, apenas o ID aparece pois é Auto_Increment.

Como não entendo muito de TagLib, creio eu que o problema esteja no meu html:text que está da seguinte forma:

&lt;html:text name="pessoa" property="nome" styleId="nome"/&gt; onde “pessoa” é o nome do meu bean e “nome” é a descrição do atributo e está da mesma forma no meu ActionForm.

Alguém poderia me dar uma luz?

Thanks!.!

Tente assim pra ver se consegue inserir.

<html:text property="pessoa.nome" styleId="nome"/>

Oi santos.fernando, em primeiro lugar obrigada por responder mas, tentei e deu o seguinte erro:

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 23

20:   &lt;html:form action="PessoaAction.do" &gt;
21:       
22:       &lt;bean:message key="nome.mensagem" /&gt;
23:       &lt;html:text property="pessoa.nome" styleId="nome"/&gt;
24:       
25:       &lt;bean:message key="logradouro.mensagem" /&gt;
26:       &lt;html:text name="pessoa" property="logradouro" styleId="logradouro"/&gt;


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: No getter method for property: "pessoa.nome" of bean: "Form.PessoaForm"
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:102)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

Post aqui seu struts-config.xml
Na tua action tire o .do, deixe apenas PessoaAction

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;

&lt;!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"&gt;


&lt;struts-config&gt;
    &lt;form-beans&gt;
        &lt;form-bean name="PessoaForm" type="Form.PessoaForm"/&gt;
    
    &lt;/form-beans&gt;
    
    &lt;global-exceptions&gt;
    
    &lt;/global-exceptions&gt;

    &lt;global-forwards&gt;
        &lt;forward name="welcome"  path="/Welcome.do"/&gt;
    &lt;/global-forwards&gt;

    &lt;action-mappings&gt;
        &lt;action input="/index.jsp" 
                name="PessoaForm" 
                parameter="parameter" 
                path="/PessoaAction" 
                scope="request" 
                type="Action.PessoaAction"&gt;
                    &lt;forward name="add" path="/index.jsp"/&gt;                    
            
        &lt;/action&gt;
        &lt;action path="/Welcome" forward="/welcomeStruts.jsp"/&gt;
        
    &lt;/action-mappings&gt;
    
    &lt;controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/&gt;

    &lt;message-resources parameter="com/myapp/struts/ApplicationResource"/&gt;    
    
    
    Paths found in Tiles definitions are relative to the main context.
    --&gt;
    &lt;plug-in className="org.apache.struts.tiles.TilesPlugin" &gt;
        &lt;set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /&gt;      
        &lt;set-property property="moduleAware" value="true" /&gt;
    &lt;/plug-in&gt;
    
    &lt;!-- ========================= Validator plugin ================================= --&gt;
    &lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;
        &lt;set-property
            property="pathnames"
            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/&gt;
    &lt;/plug-in&gt;
  
&lt;/struts-config&gt;

Prontinhooo

Na action do teu jsp, tire o .do, e deixe apenas PessoaAction.

O cadastro continua ficando em branco no banco.

Eu acho assim, pelo que entendi.

O ActionForm deveria de reconhecer o valor que é passado no &lt;html:text&gt;, porém alguma configuração deve estar errada e o ActionForm não recebe os valores, por esse motivo grava tudo em branco no banco =/

Se for da forma normal

&lt;input type="text" name="nome" id="nome"/&gt; ele vai, mas se for com o <html:text> ele nao reconhece o atributo. O property seria como um id?

Post sua Action e a ActionForm.
O property é a propriedade que irá acessar os campo.

Action

public class PessoaAction extends DispatchAction{
    
    public ActionForward add(ActionMapping mapping,ActionForm form,HttpServletRequest request,
                            HttpServletResponse response)throws Exception{
        
        PessoaForm pForm = (PessoaForm)form;
        PessoaDao pDao = new PessoaDao();
        Pessoa bean = new Pessoa();
        
        bean.setNome(pForm.getNome());        
        bean.setLogradouro(pForm.getLogradouro());
        bean.setEmail(pForm.getEmail());
        bean.setUsuario(pForm.getUsuario());
        bean.setSenha(pForm.getSenha());
        
        pDao.Inclui(bean);
        
        return mapping.findForward("add");
    }

}

ActionForm

public class PessoaForm extends ActionForm {
    
    private String nome;    
    private String logradouro;
    private String email;
    private String usuario;
    private String senha;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
    
    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    
    
}

JSP

[code]
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-bean” prefix=“bean” %>
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-html” prefix=“html” %>
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-logic” prefix=“logic” %>
<jsp:useBean id=“pessoa” scope=“request” class=“Bean.Pessoa” >
</jsp:useBean>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

<%@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:html>
<body>
<html:form action=“PessoaAction” >

  &lt;bean:message key="nome.mensagem" /&gt;
  &lt;html:text property="nome" styleId="nome" styleClass="inputfield"/&gt;
  
  &lt;bean:message key="logradouro.mensagem" /&gt;
  &lt;html:text name="pessoa" property="logradouro" styleId="logradouro"/&gt;
  
  &lt;bean:message key="email.mensagem" /&gt;
  &lt;html:text name="pessoa" property="email" styleId="email"/&gt;
  
  &lt;bean:message key="usuario.mensagem" /&gt;
  &lt;html:text name="pessoa" property="usuario" styleId="usuario"/&gt;
  
  &lt;bean:message key="senha.mensagem" /&gt;
  &lt;html:text name="pessoa" property="senha" styleId="senha"/&gt;
  
  <p>&lt;html:link href="PessoaAction.do?parameter=add"&gt; Cadastrar &lt;/html:link&gt;</p>

</html:form>
</body>
</html:html>
[/code]

Prontinho!

Experimentou colocar um System.out.println(bean.getNome()) antes do pDAO.Inclui(bean);.
Isso só pra ver se chega algum valor na Action. Lembrando que com o System o resultado sairá no console da tua IDE.

Coloquei e não chegou valor algum!

Nhai =/

Qualquer dúvida leia a apostila da Caelumaquique explica muito bem sobre Struts.

Dê uma boa lida nessa apostila que vc irá aprender legal as configurações.

É…Vou tentar aqui
Pq fiz o debug e, quando ele passa no actionForm, ele dá que o valor é null, ou seja, ele nao está reconhecendo o nome do html:text =/

mas valew!

Fernando.

Consegui. Obrigada por toda ajuda. O problema estava no

&lt;html:link href="PessoaAction.do?parameter=add"&gt; Cadastrar &lt;/html:link&gt;

Não estava, em momento algum, passando que seria um submit… Já consegui… Obrigadaaaaaaaaa!