Problemas ao chamar controllers com spring

5 respostas
K

Olá pessoal do fórum.

Estou escrevendo pois não tenho mais o que fazer a respeito de um problema que ocorre comigo utilizando o Spring 2.5 e Annotations.
Já li a apostila mais recente da caelum umas 20 vezes e não consigo entender porque toda vez que chamo uma ação por exemplo aparece a página de erro 404 do html informando que o arquivo não foi encontrado.

Meu web.xml está assim:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>Servlet dispatcher 2.0</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet dispatcher 2.0</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Já o arquivo "Servlet dispatcher 2.0-servlet.xml" que é o arquivo de configuração do spring está assim.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
            </props>
        </property>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />

    <!--
    The index controller.
    -->
    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />
    <context:component-scan base-package="bs"/>
</beans>
E tenho a classe:
@Controller
public class TesteController {
    @RequestMapping(value="/teste")
    public String adicionaPlanoConta(){
        return "ok";
    }
}
e o resultado de tudo isso é sempre que tento usar o link
<a href="teste">Clique aqui para testar</a>
ou até um form que criei com um botão submit:
<form action="teste">
            <input type="submit" value="Agora vai"/>
</form>
Resultam no erro 404.

Se alguem puder me ajudar ficarei muito grato.

5 Respostas

R
<a href="teste">Clique aqui para testar</a>

qual a url que aparece no navegador qdo vc clica ai?

nao esta faltando o contexto?

abrass

K

A url que aparece é: http://localhost:8080/administracao/teste

E já perdi as contas de quantos projetos criei para tentar solucionar este problema.

Quando faço debug no NetBeans vou até o log do apache e mostra que a classe com o controlador é carregada no caso “TesteController”.

R

cara eu gosto do spring mas nao do mvc deles, entao nao vou conseguir te auxiliar bem nisso, mas estudei o mvc por aqui: http://krams915.blogspot.com/p/tutorials.html

e realmente o descrito ali funciona, é a versao 3.0 já. se seguir por la td ira dar certo

abrasss

K

Não sou bom em inglês mas vou ter de começar a melhorar mesmo não tem jeito.

Vlw pela dica.

J

kaahoje,

Tenta assim:@Controller @RequestMapping(value = "/") public class TesteController { @RequestMapping(value="/teste") public String adicionaPlanoConta(){ return "ok"; } }E assim:<a href="/teste">Clique aqui para testar</a>

Criado 14 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 5
Participantes 3