2016-08-04 4 views
0

Spring MVC textbox exampleでチュートリアルを試してみます。うまくいけば、私はリンクの名前を扱うことについて全く知らない。Spring MVCを使用してJSPでHTMLへのリンクを設定する

唯一の方法はhttp://localhost:8080/SpringMVC/textbox.htmlですが、textbox.htmlの部分を他のものに変更する方法はわかりません。

コメントと私が知っているすべての情報によれば、それは制御クラスに基づいています。

TextBoxController.java - ここ> textbox.html

は、関連するコードです:

web.xmlの

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

MVC-ディスパッチャ-servlet.xml

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

<bean class="nch.customer.controller.TextBoxController"> 
    <property name="formView" value="CustomerForm" /> 
    <property name="successView" value="CustomerSuccess" /> 
    // Anything to put here? 

    <property name="validator"> 
     <bean class="nch.customer.validator.CustomerValidator" /> 
    </property> 
</bean> 

TextBoxController.java

public class TextBoxController extends SimpleFormController { 

public TextBoxController() { 
    setCommandClass(Customer.class); 
    setCommandName("customerForm"); 
    // Or anything to put here? 
} 

@Override 
protected ModelAndView onSubmit (
    HttpServletRequest request, HttpServletResponse response, 
    Object command, BindException errors) throws Exception { 

    Customer customer = (Customer) command; 
    return new ModelAndView("CustomerSuccess","customer",customer); 
} 

私の質問です。どのようにクラスの名前を変更せずにリンク名を変更するには?例:

TextBoxController.java - > txb.html

+0

アノテーションまたはXMLのいずれかにURLマッピングがあります。あなたはそれを見つけて私たちに見せてくれますか? – Stewart

+0

@Steward私はリンクされた例で、XMLとアノテーションを使用していません。パッケージ名以外の変更はありません。 –

+0

Rocherleeの答えを参照してください。彼は 'SimpleUrlHandlerMapping'でそれをやっています。それは私が話しているものです。マッピングのどこかを指定する必要があります。そうしないと、デフォルトの動作が得られます。 – Stewart

答えて

3

このBean ControllerClassNameHandlerMappingは変換この設定では TextBoxController -> /textbox*

、両方textbox.htmltextboxxx.html仕事をしています。

...クラスの短い名前を使用する場合は、「Controller」サフィックスが存在する場合はそれを削除し、大文字/小文字を使用してマッピングとして小文字を返します。

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

別のBean SimpleUrlHandlerMappingと交換してください、そして、あなたのパスをカスタマイズしたいときTextBoxController Beanのidを提供しています。 mvc-dispatcher-servlet.xmlは次のようになります。

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
    <props> 
     <prop key="/txb.html">txtboxController</prop> 
    </props> 
    </property> 
</bean> 

<bean id="txtboxController" class="nch.customer.controller.TextBoxController"> 
    <property name="formView" value="CustomerForm" /> 
    <property name="successView" value="CustomerSuccess" /> 
    <property name="validator"> 
     <bean class="nch.customer.validator.CustomerValidator" /> 
    </property> 
</bean> 
関連する問題