0

私は以下のようなスプリングコントローラーでrestメソッドを持っています:

@RequestMapping(value="/register/{userName}" ,method=RequestMethod.GET)
@ResponseBody
public String getUserName(HttpServletRequest request,@PathVariable String userName ){
    System.out.println("User Name : "+userName);
    return "available";

}

jqueryでは、次のようなajax呼び出しを書きました:

$(document).ready(function(){

        $('#userName').blur(function(){
            var methodURL = "http://localhost:8085/ums/register/"+$('#userName').val();

            $.ajax({
                type : "get",
                URL : methodURL,
                data : $('#userName').val(),
                success : function(data){
                    alert(data);
                    $('#available').show();
                    }
                })
            });
});

web.xml には次のものがあります。

<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>/</url-pattern>
  </servlet-mapping>

spring-servlet.xml には、以下のようなビュー リゾルバーがあります。

<context:component-scan base-package="com.users.controller" />
    <context:annotation-config />
        <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"/>
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="text/xml" />
<entry key="htm" value="text/html" />
</map>
</property>
<property name="ignoreAcceptHeader" value="true" />
<!-- <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />-->
<property name="defaultContentType" value="text/html" />
</bean>
<bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="order" value="2" />
        <property name="prefix">
            <value>/WEB-INF/jsp/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

これをサーバーで実行している場合、コントローラーには送信されません。このコードの問題を教えてください。

これについて誰か助けてください。

よろしく、 シュルティ

4

3 に答える 3

1

メソッド定義に @RequestMapping(value="register/{userName}" があるため、jquery 呼び出しは同じ構文に従う必要があります。

var methodURL = "http://localhost:8085/users/register/"+$('#userName').val()+".html";

ただし、RequestMapping 値にも問題があります。/ で始まる必要があります。

@RequestMapping(value="/register/{userName}"

また、最後に「.html」が必要だとは思いません

于 2013-04-15T14:07:41.423 に答える
0

この行を spring-servlet.xml に追加します。@Controllerやなどの Web MVC 固有の注釈を有効にします。@RequestMapping

<mvc:annotation-driven />

注釈付きコントローラーの例

http://localhost:8080/webappコンテキスト付きの URL があり、 urlのような API 呼び出しが必要であると仮定します/users/register/johnDoe。(ユーザー名は johnDoe です)

コントローラ クラスは次のようになります。

@Controller
@RequestMapping(value="/users")
class UserController {

@ResponseBody
@RequestMapping(value="/register/{username}", method=RequestMethod.GET)
    public String registerUser(@PathVariable String username) {
        return username;
    }
}
于 2013-04-17T05:59:26.547 に答える