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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Command Object и аннотации, Spring MVC 
V
    Опции темы
sith
Дата 27.9.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



... такой вопрос... 
...я использую Spring MVC  с SpringSource Application Server, в своем приложении, web.xml не использую.. все контексты за меня поидеи поднимает сервер... опять же собсвенно ручно Dispatcher Servlet и производные xml конфижники я не использую... простые контроллеры работают... нормально... у меня проблема заключаеться в том как замапить параметры формы сразу на обьект... у меня есть следующее... сам бин с одним полем... которое нужно замапить... форма ... контроллер...
... вот контроллер...

Код

@Controller("/sayHello.do")
public class FormController {

    @RequestMapping(method=RequestMethod.GET)
    public void say(@ModelAttribute("messageCommand") MessageCommand mc,Errors errors, ModelMap map) {
        if(errors.hasErrors()){
            map.addAttribute("say", "error");
        }
        map.addAttribute("say", mc.getName());
    }
    
}


вот форма...

Код

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form:form  action="/sayHello.do" commandName="messageCommand">
    <form:input path="name" />
    <input type="submit" value="say hello" />
</form:form>


</body>
</html>



при вызове самой формы получаю ошибку в браузере

Код

type:    Exception report
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 /simpleForm.jsp at line 12

9: <title>Insert title here</title>
10: </head>
11: <body>
12: <form:form  action="/sayHello.do" commandName="messageCommand">
13:    <form:input path="name" />
14:    <input type="submit" value="say hello" />
15: </form:form>


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause:    java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
    org.springframework.web.servlet.support.RequestContextUtils.getWebApplicationContext(RequestContextUtils.java:84)
    org.springframework.web.servlet.support.RequestContext.initContext(RequestContext.java:211)
    org.springframework.web.servlet.support.JspAwareRequestContext.initContext(JspAwareRequestContext.java:76)
    org.springframework.web.servlet.support.JspAwareRequestContext.<init>(JspAwareRequestContext.java:50)
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:74)
    org.apache.jsp.simpleForm_jsp._jspx_meth_form_005fform_005f0(simpleForm_jsp.java:103)
    org.apache.jsp.simpleForm_jsp._jspService(simpleForm_jsp.java:70)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note:    The full stack trace of the root cause is available in the SpringSource Application Platform logs.



... может кто то сталкивался с такой проблемой... или как вообще решить такую задачу когда контроллеры с анотациями и нигде не прописываються


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
v2v
Дата 28.9.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



в общем случае регистрируется в web.xml слушатель:
Код

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

а вот как в твоём случае быть ... 
есть какие то общедоступные доки по твоему серверу? интересно почитать...


--------------------
PM   Вверх
sith
Дата 28.9.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да доки есть... на сайте www.springsource.com можно зарегиться и скачать бета версию сервера... плюс почитать маны... но маны достаточно скудные... и эту проблему они не освещают... в основном я не нашел... плюс мне кажеться что проблема не в самом сервере а не посредственно в конфигруации SpringMVC...

да я добавил слушатель в свой web.xml ...  и трансформировал немного страницу и контроллер... теперь все выглядет так... ну и ошибка у меня сейчас другая.... smile


Код

@Controller
@RequestMapping("/sayHello.do")
public class FormController {
    
    @RequestMapping(method=RequestMethod.POST)
    public void say(@ModelAttribute("messageCommand") MessageCommand mc,BindingResult errors, ModelMap map) {
        if(errors.hasErrors()){
            map.addAttribute("say", "error");
        }
        map.addAttribute("say", mc.getName());
    }
    
}


форма в jsp
Код

<form:form   method="POST" modelAttribute="messageCommand">
    <form:input path="name" />
    <input type="submit" value="say hello" />
</form:form>



 и ошибка 
Код

org.apache.jasper.JasperException: An exception occurred processing JSP page /simpleForm.jsp at line 13

10: </head>
11: <body>
12: <form:form action="/sayHello.do"  method="POST" modelAttribute="messageCommand">
13:    <form:input path="name" />
14:    <input type="submit" value="say hello" />
15: </form:form>
16: 


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause:    java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'messageCommand' available as request attribute
    org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:172)
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:192)
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:158)
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:145)
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:136)
    org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:120)
    org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:379)
    org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:139)
    org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:90)
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:77)
    org.apache.jsp.simpleForm_jsp._jspx_meth_form_005finput_005f0(simpleForm_jsp.java:145)
    org.apache.jsp.simpleForm_jsp._jspx_meth_form_005fform_005f0(simpleForm_jsp.java:110)
    org.apache.jsp.simpleForm_jsp._jspService(simpleForm_jsp.java:70)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


может с этой проблемой сталкивались



--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
v2v
Дата 28.9.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(sith @  28.9.2008,  22:49 Найти цитируемый пост)
    @RequestMapping(method=RequestMethod.POST)
    public void say(@ModelAttribute("messageCommand") MessageCommand mc,BindingResult errors, ModelMap map) {

этот  метод ты используешь при создании формы или при сабмите формы?
если при сабмите, тогда покажи метод который ты используешь при создании.
Если при создании, то это не правильно :
ты в метод передаёшь ModelAttribute , а откуда  - он не существует ... он появится когда ты сделаешь сабмит с формой которая представляет MessageCommand объект.
Для создания формы тебе надо написать другой метод, например:
Код

    @RequestMapping(
            value = { "/create.do"}, 
            method = RequestMethod.GET)    
    public String setupForm(@RequestParam("id") long id, ModelMap model) {
        if (id == 0){
            model.addAttribute("messageCommand", new MessageCommand());
        } else {
            model.addAttribute("messageCommand", getMessageCommandFromDatabaseById(id));            
        }        
        return "form";
    }




Это сообщение отредактировал(а) v2v - 28.9.2008, 23:12


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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