Duvida sobre struts

3 respostas
D

Opa :D

To criando uma aplicação aqui utilizando o Strus 1.3

struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>

<struts-config>

    <form-beans>

	<form-bean name="testeForm" type="teste.TesteForm"/>
		
    </form-beans>


    <global-exceptions>
    </global-exceptions>


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

    </global-forwards>


    <action-mappings>

        <action
            path="/Welcome"
            forward="/pages/Welcome.jsp"/>
            
        <action path="/cadastroRockNRoll" forward ="/pages/cadastro/cadastroRockNRoll.jsp" name="testeForm"/>  

    </action-mappings>

	<message-resources parameter="MessageResources" />


  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property
        property="pathnames"
        value="/org/apache/struts/validator/validator-rules.xml,
               /WEB-INF/validation.xml"/>
  </plug-in>

</struts-config>
cadastroRockNRoll.jsp
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="bean" %>

<html>
<head>
</head>
<body>
<p>Cadastro geral usando <b>'action-mapping'</b></p>
<br>
<br>


Nome <html:text property="nome" size="20" maxlength="10"/>
Sobrenome <html:text property="sobrenome" size="20" maxlength="10"/>


</body>
</html>
Welcome.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<html:html>
<head>
<title>Weeeeeeeeeeeeeeeeeee</title>
<html:base/>
</head>
<body bgcolor="white">

<logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application">
  <font color="red">
    ERROR:  Application resources not loaded -- check servlet container
    logs for error messages.
  </font>
</logic:notPresent>

<h3><bean:message key="welcome.heading"/></h3>
<p><bean:message key="welcome.message"/></p>

<p><a href="../cadastroRockNRoll.do">Musical</a></p>

</body>
</html:html>
TesteForm
package teste;

import org.apache.struts.action.ActionForm;

public class TesteForm extends ActionForm {
	
	public String nome;
	public String sobrenome;
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSobrenome() {
		return sobrenome;
	}
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	
	
}

Se eu utilizar as tags do Struts na página cadastroRockNRoll.jsp, eu vou precisar criar um Action? Pq? Só um form não resolve?

Eu to perguntando isso, pq to recebendo a seguinte mensagem de erro e tudo que eu quero é acessar a página cadastroRockNRoll.jsp para depois eu colocar um botão de insert e tal...

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Exception in JSP: /pages/cadastro/cadastroRockNRoll.jsp:13

10:

11:
12:
13: Nome
14: Sobrenome
15:
16:

Stacktrace:
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

org.apache.jasper.JasperException: Exception in JSP: /pages/cadastro/cadastroRockNRoll.jsp:13

10:

11:
12:
13: Nome
14: Sobrenome
15:
16:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:99)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:82)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:51)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.ServletException: Cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
org.apache.jsp.pages.cadastro.cadastroRockNRoll_jsp._jspService(cadastroRockNRoll_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:99)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:82)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:51)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.jsp.JspException: Cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope
org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:852)
org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:120)
org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:99)
org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:77)
org.apache.jsp.pages.cadastro.cadastroRockNRoll_jsp._jspx_meth_html_text_0(cadastroRockNRoll_jsp.java:105)
org.apache.jsp.pages.cadastro.cadastroRockNRoll_jsp._jspService(cadastroRockNRoll_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:99)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:82)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:51)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:446)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.

--------------------------------------------------------------------------------

Apache Tomcat/5.5.20

3 Respostas

G

Vê se seu web.xml tem declarada as tags do Struts.

<jsp-config>
        <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-nested.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
        </taglib>
        </jsp-config>
marcelo_mococa

Coloque os campos de formulário dentro de uma tag html:form
Sem ela o struts não sabe qual form(ActionForm) popular.

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="bean" %>
 
 <html>
 <head>
 </head>
 <body>
 <p>Cadastro geral usando <b>'action-mapping'</b></p>
 <br>
 <br>

 <html:form action="cadastroRockNRoll">
 
 Nome <html:text property="nome" size="20" maxlength="10"/>
 Sobrenome <html:text property="sobrenome" size="20" maxlength="10"/>
 
 </html:form>

 </body>
 </html>
D
marcelo_mococa:
Coloque os campos de formulário dentro de uma tag html:form Sem ela o struts não sabe qual form(ActionForm) popular.
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="bean" %>
 
 <html>
 <head>
 </head>
 <body>
 <p>Cadastro geral usando <b>'action-mapping'</b></p>
 <br>
 <br>

 <html:form action="cadastroRockNRoll">
 
 Nome <html:text property="nome" size="20" maxlength="10"/>
 Sobrenome <html:text property="sobrenome" size="20" maxlength="10"/>
 
 </html:form>

 </body>
 </html>

eu nunca usei dentro de uma form e sempre funcionou...

Criado 5 de janeiro de 2007
Ultima resposta 8 de jan. de 2007
Respostas 3
Participantes 3