Spring MVC - Отображение форм - PullRequest
1 голос
/ 12 мая 2009

Возможно, здесь упущено что-то совершенно очевидное, но здесь идет речь. Я начинаю с Spring MVC. У меня есть контроллер формы для обработки входящих запросов в /share/edit.html. Когда я нажимаю эту ссылку в своем браузере, я получаю следующую ошибку:

 The requested resource (/inbox/share/share/edit) is not available.

Вот мое приложение Context-mvc.xml:

 <bean id="publicUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
        <property name="mappings" >
            <value>
                /share/edit.html=shareFormController
                /share/list.html=shareController
                /share/view.html=shareController
                /folders.json=foldersController
                /studies.json=studiesController
            </value>
        </property>
    </bean>


<bean id="internalPathMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />

<bean id="shareFormController" class="com.lifeimage.lila.controller.ShareFormController" />
<bean id="shareController" class="com.lifeimage.lila.controller.ShareController" >
    <property name="methodNameResolver" ref="internalPathMethodNameResolver" />
</bean>

и мой контроллер формы:

public class ShareFormController extends SimpleFormController {

    public ShareFormController() {
        setCommandClass( Share.class );
    }

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

        //controller impl...

    }



}

Ответы [ 4 ]

1 голос
/ 12 мая 2009

Вы должны взглянуть на свой видоискатель. Убедитесь, что он разрешает логическое имя в вашем контроллере так, как вы думаете. Похоже, имя, к которому оно относится, не существует в настоящее время

1 голос
/ 15 мая 2009

Я думаю, что решил эту проблему. Было две проблемы:

1) Реализации SimpleFormController требуют представления формы и успеха; который я не настроил здесь. Поскольку это серверный метод для клиента AJAX, я добавил представление Spring-JSON следующим образом:

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

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" default-lazy-init = "false" default-autowire = "нет" по умолчанию-зависимость-регистрация = "нет">

<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView">
        <property name="jsonErrors">
            <list>
                    <ref bean="statusError" />
                    <ref bean="modelflagError" />
            </list>
    </property>
</bean>

<bean name="statusError" 
      class="org.springframework.web.servlet.view.json.error.HttpStatusError">
      <property name="errorCode"><value>311</value></property>
</bean>
<bean name="modelflagError" 
      class="org.springframework.web.servlet.view.json.error.ModelFlagError">
      <property name="name"><value>failure</value></property>
      <property name="value"><value>true</value></property>
</bean>

, который можно использовать для всех контроллеров, возвращающих JSON.

2) Я переключился с SimpleURLHandlerMapping на ControllerClassNameHandlerMapping и опирался на соглашения об именах Spring (controllerClassName / method.html), которые исправили проблему маршрутизации. Может не быть долгосрочным решением, но помогло мне справиться с этой задачей.

0 голосов
/ 03 августа 2009

@ jordan002 Когда я вижу все обручи, которые вам пришлось пройти, чтобы выполнить свою задачу, я чувствую себя обязанным поделиться очень мощной средой Java MVC, которая требует гораздо меньших настроек. Фреймворк называется Induction, ознакомьтесь со статьей Induction vs. Spring MVC, http://www.inductionframework.org/induction-vs-spring-mvc.html

0 голосов
/ 12 мая 2009

Вы проверили вывод журнала? Spring MVC обычно довольно многословен в том, что выводит.

Кроме того, опубликованный вами URL-адрес (/inbox/share/share/edit) не соответствует тому, что вы настраиваете (/share/edit.html).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...