2016-02-24 4 views
0

Мое приложение не работает с requestmapping, запрос всегда работает с тем же методом handleRequest, контроллер - RestController.java, и URL-адреса перенаправляются на него, когда имеет путь/REST2/*, он работает но всегда с тем же методом. Но метод «update» никогда не работает, когда я отправляю запрос locahost: 9080/myapp/REST2/rrr, и если я изменю URL-адрес, то есть localhost: 9080/myapp/REST2/XXX, запрос будет обрабатывать метод Request.Контроллер @RequestMapping URL-адреса ошибок

RequestMapping не работает хорошо, я пытался с другими решениями, но не работает ..

Есть ли у вас какие-либо идеи?

Restcontroller.java

public class RestController implements Controller{ 
private Configuration config; 
private static String[] requestHeaders = {"accept", "pragma"}; 
private static String[] responseHeaders = {};  

public void setConfig(Configuration config) 
{ 
    this.config = config; 
} 


@RequestMapping(value="/rrr") public ModelAndView update(HttpServletRequest request, HttpServletResponse response) throws Exception 
    { 

    String asset_name = request.getParameter("assetid"); 
    response.setContentType("text/plain"); // Set content type of the response so that jQuery knows what it can expect. 
    response.setCharacterEncoding("UTF-8"); // You want world domination, huh? 

    String values = "Working"+ asset_name; 
    response.setContentLength(values.length()); 

    PrintWriter out = response.getWriter(); 

    out.println(values); 
    return null; 

} 

@RequestMapping(value ="/home")public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception 
{ 
    Arrays.sort(requestHeaders); 
    Arrays.sort(responseHeaders); 
    String values; 

    String asset_name = request.getParameter("assetid"); 
    ... 
    response.setContentLength(values.length()); 
    // 
    PrintWriter out = response.getWriter(); 

    out.println(values); 


    return null; 
}} 

весна-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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/context 
      http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 

    <!-- View resolver. Prepends prefix /WEB-INF/jsp and suffix .jsp to view names. --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
    </bean> 

    <!-- Always use full path when mapping URLs to bean names. --> 
    <bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> 
    <property name="alwaysUseFullPath" value="true" /> 
    </bean> 

    <!-- Home page. --> 
    <bean name="/home.app" class="com.fatwire.wem.sample.HomeController"> 
    <property name="config" ref="config" /> 
    </bean> 
    <!-- Installation page. --> 
    <bean name="/install.app" class="com.fatwire.wem.sample.InstallController"> 
    <property name="config" ref="config" /> 
    </bean> 
    <!-- Layout page. --> 
    <bean name="/layout.app" class="com.fatwire.wem.sample.LayoutController" /> 
    <!-- REST proxy page. --> 
    <bean name="/REST/**" class="com.fatwire.wem.sample.ProxyController"> 
    <property name="config" ref="config" /> 
    </bean> 
    <!-- REST proxy page. --> 
    <bean name="/REST2/**" class="com.fatwire.wem.sample.RestController"> 
    <property name="config" ref="config" /> 
    </bean> 


</beans> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="2.4" 
     xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > 

    <!-- Bootstrap Spring configuration to be used by both SSO and MVC --> 
    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- WEM SSO Listener --> 
    <listener> 
    <listener-class>com.fatwire.wem.sso.SSOListener</listener-class> 
    </listener>  

    <!-- Configure Spring MVC --> 
    <servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>*.app</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/REST/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/REST2/*</url-pattern> 
    </servlet-mapping> 


    <!-- WEM SOO Filter --> 
    <filter> 
    <filter-name>WEM SSO Filter</filter-name> 
    <filter-class>com.fatwire.wem.sso.SSOFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>WEM SSO Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

</web-app> 

Запрос AJAX

function load_form(data){ 
       var asset_id = data; 
       $.post('REST2/home', { 
        assetid : data, 

       }, function(responseText) { 
       alert(responseText); 
       }); 
    } 

    function update_form(){ 
     var asset_id = "XXX"; 
     $.post('REST2/rrr', { 
      assetid : asset_id, 

     }, function(responseText) { 
      alert(responseText) 



     }); 
+0

попробуйте указать HTTP глаголом в контроллере, @RequestMapping (значение =»/rrr ", method = RequestMethod.POST) – Backtrack

+0

Я пытаюсь @RequestMapping (value ="/home ", method = RequestMethod.POST) a nd @RequestMapping (value ="/rrr ", method = RequestMethod.POST), но работает с та же проблема ... – Obox

ответ

0

Попробуйте добавить @Controller и @RequestMapping аннотаций RestController classlike это:

@Controller 
    @RequestMapping(value="/REST2") 
    public class RestController implements Controller{ 

И добавить method=RequestMethod.POST@RequestMapping методов, как это:

@RequestMapping(value ="/home", method=RequestMethod.POST) 
    ... 
    @RequestMapping(value ="/rrr", method=RequestMethod.POST) 
+0

, какую библиотеку мне нужно импортировать: import org.springframework.stereotype.Controller; или import org.springframework.web.servlet.mvc.Controller; потому что у меня есть конфликт – Obox

+0

Попробуйте использовать этот класс: import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; с \t org.springframework \t весна веб \t 3.0.4.RELEASE Abdelhak

+0

Это решение является правильным, но вам нужно изменить RestController к контроллеру, наконец Lib контроллера был: импорт орг .springframework.stereotype.Controller и я удаляю реализацию Controller, чтобы позволить Controller, Thanks – Obox