Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> траблы с spring:bind, Чего-то я не понял 
V
    Опции темы
kaa
Дата 6.3.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Всем привет!

В общем такая трабла: при попытке сделать так

Код

<spring:bind path="formcommand.summ" >
                    <div>A+B again</div>
                    <div><c:out value="${status.value}" /></div>
</spring:bind>


Вылетает эксепшн
Код

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/form.jsp at line 35

32:              
33:                 <div>A+B</div>
34:                 <div><c:out value="${fcc.summ}" /></div>
35:                 <spring:bind path="FormCommandClass.summ" >
36:                     <div>A+B again</div>
37:                     <div><c:out value="${status.value}" /></div>
38:                 </spring:bind>


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause 
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean name 'FormCommandClass' available as request attribute
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.WEB_002dINF.jsp.form_jsp._jspService(form_jsp.java:140)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


Я уже пробовал вместо имени комманды и имя бина подставлять - никак. всё одно талдычет что не может найти бин с данным именем.

Определяется имя комманды и класса тут (FormController.java)

Код

public class FormController extends SimpleFormController{

    public FormController(){
        setCommandClass(FormCommandClass.class);
        setCommandName("formcommand");
    }

    protected boolean isFormSubmission(HttpServletRequest request){
        String method = request.getMethod();
        if(method.equals("POST")){
            return true;
        }
        return false;
    }

    protected Object formBackingObject(HttpServletRequest request)
    throws Exception{
        return new FormCommandClass();
    }

    protected ModelAndView onSubmit(Object command, BindException errors)
    throws Exception{
        FormCommandClass fcc = (FormCommandClass) command;
        fcc.setSumm(fcc.getNamea()+fcc.getNameb());
        return new ModelAndView(getSuccessView());
        //return new ModelAndView("form", "fcc", fcc);
    }
}


Интенсивно гуглил, но ничего внятного по этой баге не нашёл smile
Поможите кто чем может smile
PM MAIL   Вверх
XEugene
Дата 6.3.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 1.1.2008

Репутация: 1
Всего: 2



А если задать имя command не в коде контроллера, а при его объявлении в конфиге?
Код

<property name="commandName" value="formcommand"/>


Добавлено через 2 минуты и 4 секунды
И имя command-класса там же.
PM MAIL   Вверх
Tony
Дата 6.3.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Или пoпробуйте:
Код

<spring:bind path="command.summ" >



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
kaa
Дата 7.3.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Пасибо! 

Поковыряюсь smile
PM MAIL   Вверх
kaa
Дата 7.3.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



XEugene, 

Не помогло :(

Добавлено через 3 минуты и 50 секунд
Tony, 

Вообще ругается:

Код

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/index.jsp at line 23

20:         </form>
21:         <div>
22:             <div>a+b</div>
23:             <spring:bind path="command.summ">
24:                 <div><c:out value="${status.value}"/></div>
25:             </spring:bind>
26:         </div>


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)


root cause 

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspService(index_jsp.java:128)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)





Я что-то решительно не понимаю, почему он может не видеть имя командного класса? Судя по гуглу  -  проблема не у меня одного, только вот ответов на неё как-то не нашёл пока :(
PM MAIL   Вверх
kaa
Дата 7.3.2009, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



А вот когда возвращаю имя коммандного объекта - всё работает:
Код


protected ModelAndView onSubmit(java.lang.Object command) throws java.lang.Exception{

        FormCommandClass fcc = (FormCommandClass) command;
        fcc.setSumm(fcc.getNamea()+fcc.getNameb());

        ModelAndView mav = new ModelAndView(getSuccessView(),"formcommand",fcc);
        //ModelAndView mav = new ModelAndView(getSuccessView());

        return mav;
    }


Может я что в конфе диспетчера не так сделал?

dispatcher-servlet.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
    
    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.html">FormController</prop>
            </props>
        </property>
    </bean>
    
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />
    
    <!--
    The index controller.
    -->
    <!-- <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />-->

    <bean id="FormController" class="FormController">
        <property name="commandClass" value="FormCommandClass"/>
        <property name="commandName" value="formcommand" />
        <property name="formView" value="index" />
        <property name="successView" value="index" />
    </bean>
    
</beans>

PM MAIL   Вверх
kaa
Дата 7.3.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Выяснил кажись.

Свойство commandName не используется при ответе на отправку формы (по крайней мере в не-session бине).

Объект коммандного класса надо класть в модель явно.

Код

protected ModelAndView onSubmit(java.lang.Object command) throws java.lang.Exception{

        FormCommandClass fcc = (FormCommandClass) command;
        fcc.setSumm(fcc.getNamea()+fcc.getNameb());

        //ModelAndView mav = new ModelAndView(getSuccessView(),"formcommand",fcc);
        ModelAndView mav = new ModelAndView(getSuccessView());
        mav.addObject("formcommand", fcc);
        return mav;
    }



Что в общем-то можно назвать очевидным в некотором смысле, ибо вернуться может более сложный объект чем тот, который содержит переменные запроса.
PM MAIL   Вверх
goodday1941
Дата 8.3.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: нет
Всего: 9



пс... как то все не так...  посмотри как использовать SimpleFormController (переопределяют обычно метод formBackingObject который возвращает бин формы)..  примеров в нете валом...

Добавлено через 5 минут и 2 секунды
так же испотльзование spring:bind тоже можно заменить на таги с Spring MVC:

Код

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sfm" %>
    <sfm:form commandName="yourCommandName" method="POST">
    <sfm:input path="yourTxtField" maxlength="256" size="40" cssClass="whatever"/>
    </sfm:form> 
 
... в результате все станет намного прозрачнее и компактнее 


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
kaa
Дата 8.3.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



goodday1941, 

Ну так я вроде и переопределил smile
PM MAIL   Вверх
goodday1941
Дата 9.3.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: нет
Всего: 9



хе... точно ) что то я просмотрел )).. смутило просто это:

Код

 ModelAndView mav = new ModelAndView(getSuccessView());
        mav.addObject("formcommand", fcc);
        return mav;



--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.