2016-08-04 3 views
0

Я пробую учебник по Spring MVC textbox example. Хорошо работает, однако я понятия не имею, как обращаться с именем ссылки.Настройка ссылки на HTML в JSP с использованием Spring MVC

Единственный рабочий - 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

Будет отображаться URL-адрес где-либо, как в виде аннотации, так и в формате XML. Можете ли вы найти и показать нам это, пожалуйста? – Stewart

+0

@Steward Я сделал это с помощью связанного примера, используя XML и никаких аннотаций. Изменений нет, кроме имен пакетов. –

+0

См. Ответ Рошерли. Он сделал это с помощью 'SimpleUrlHandlerMapping'. Это то, о чем я говорю. Вы должны указать где-то сопоставление, иначе вы получите поведение по умолчанию. – Stewart

ответ

3

Этот компонент ControllerClassNameHandlerMapping делает преобразование TextBoxController -> /textbox*

С помощью этой конфигурации, как textbox.html и textboxxx.html работы.

... взять короткое имя класса, удалить суффикс «Контроллер», если он существует, и вернуть оставшийся текст с нижним обложением в качестве отображения с ведущим /.

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

Замените его другой боб SimpleUrlHandlerMapping, а также обеспечить id для TextBoxController фасоли, когда вы хотите, чтобы настроить свой путь. Ваш 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> 
Смежные вопросы