Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
bbk
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 57
1

Не могу в Spring MVC

04.06.2013, 15:56. Просмотров 2094. Ответов 2
Метки нет (Все метки)

Есть простой сервлет и три странички: главная, формочка и страница, которая показывает, что заполнение формы прошло успешно. Что у меня работает: главная страница, страница с формочкой и страница, которая показывает, что заполнение формы прошло успешно. Но если форма не была заполнена успешно, то получаю ошибку(лог большой, поэтому покажу текст ошибки внизу).
Вот контроллер:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package com.mycomp.newshit;
 
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
import com.mycomp.newshit.FormValidator;
import com.mycomp.newshit.Form;
 
/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    
    @Autowired
    private FormValidator signupValidator;
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    
    @RequestMapping(value = "/form", method = RequestMethod.GET)
    public ModelAndView signup(ModelMap model) {
        return new ModelAndView("signup", "signupForm", new Form());
    }
 
    @RequestMapping(value = "/form", method = RequestMethod.POST)
    public String processSignup(Form signupForm, BindingResult result) {
        signupValidator.validate(signupForm, result);
        if (result.hasErrors()) {           
            return "signup";
        }
        return "success";
    }
            
    
    
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate );
        
        return "home";
    }
    
}
Вот валиадатор:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.mycomp.newshit;
 
import org.apache.commons.validator.routines.EmailValidator;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
 
import com.mycomp.newshit.Form;
 
@Component
public class FormValidator implements Validator {
    
    public boolean supports(Class<?> clazz) {
        return Form.class.isAssignableFrom(clazz);
    }
 
    public void validate(Object target, Errors errors) {
        Form signupForm = (Form) target;
        
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "username.empty", "Username must not be empty.");
        String username = signupForm.getUsername();
        if ((username.length()) > 16) {
            errors.rejectValue("username", "username.tooLong", "Username must not more than 16 characters.");
        }
        
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "password.empty", "Password must not be empty.");
        if (!(signupForm.getPassword()).equals(signupForm
                .getConfirm())) {
            errors.rejectValue("confirm", "confirm.passwordDontMatch", "Passwords don't match.");
        }
        
        if( !EmailValidator.getInstance().isValid( signupForm.getEmail() ) ){
            errors.rejectValue("email", "email.notValid", "Email address is not valid.");
        }
    }   
 
}
Вот сервис:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.mycomp.newshit;
 
import java.io.Serializable;
 
public class Form implements Serializable {
    private String username;
    private String password;
    private String email;
    private String confirm;
    
    public void setUsername(String username)
    {
        this.username=username;
    }
    public void setPassword(String password)
    {
        this.password=password;
    }
    public void setEmail(String email)
    {
        this.email=email;
    }
    public void setConfirm(String confirm)
    {
        this.confirm=confirm;
    }
    
    public String getUsername()
    {
        return username;
    }
    
    public String getPassword()
    {
        return password;
    }
    
    public String getEmail()
    {
        return email;
    }
    public String getConfirm()
    {
        return confirm;
    }
 
}
Вот страница:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ page session="false"%>
<html>
<head>
<title>Sign Up</title>
<style type="text/css">
span.error {
    color: red;
}
</style>
</head>
<body>
    <h1>Sign Up</h1>
 
    <form:form method="post" commandName="signupForm">
        <table>
            <tr>
                <td>Username:</td>
                <td><form:input path="username"/></td>
                <td><span class="error"><form:errors path="username"/></span></td>
            </tr>
 
            <tr>
                <td>Password:</td>
                <td><form:password path="password"/></td>
                <td><span class="error"><form:errors path="password" /></span></td>
            </tr>
 
            <tr>
                <td>Confirm Password:</td>
                <td><form:password path="confirm"/></td>
                <td><span class="error"><form:errors
                            path="confirm"/></span></td>
            </tr>
 
            <tr>
                <td>Email:</td>
                <td><form:input path="email"/></td>
                <td><span class="error"><form:errors path="email"/></span></td>
            </tr>
 
            <tr>
                <td colspan="3"><input type="submit" value="Submit" /></td>
            </tr>
        </table>
    </form:form>
 
    <a href="${pageContext.request.contextPath}/" title="Home">Home</a>
</body>
</html>
А это ошибка:

HTTP Status 500 - An exception occurred processing JSP page /WEB-INF/views/signup.jsp at line 20

--------------------------------------------------------------------------------

type Exception report

message An exception occurred processing JSP page /WEB-INF/views/signup.jsp at line 20

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/views/signup.jsp at line 20

17: <table>
18: <tr>
19: <td>Username:</td>
20: <td><form:input path="username"/></td>
21: <td><span class="error"><form:errors path="username"/></span></td>
22: </tr>
23:


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


root cause

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'signupForm' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag. java:178)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTa g.java:198)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:1 64)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag .java:151)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java :142)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormEl ementTag.java:126)
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
org.apache.jsp.WEB_002dINF.views.signup_jsp._jspx_meth_form_005finput_005f0(signup_jsp.java:277)
org.apache.jsp.WEB_002dINF.views.signup_jsp._jspService(signup_jsp.java:107)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


note The full stack trace of the root cause is available in the VMware vFabric tc Runtime 2.8.2.RELEASE/7.0.35.B.RELEASE logs.


--------------------------------------------------------------------------------

VMware vFabric tc Runtime 2.8.2.RELEASE/7.0.35.B.RELEASE


Сам проект лежит во вложениях.

Щито делать?
0
Вложения
Тип файла: 7z spring.7z (9.2 Кб, 11 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 15:56
Ответы с готовыми решениями:

Ошибка Tiles в Spring MVC
Ммм. В общем, выдает ошибку java.lang.NoSuchMethodError:...

Что выбрать из java-фреймворков для вывода коллекции: Spring MVC, Struts, Mojarra(JSF)?
Доброго дня, уважаемые Java-гуру. Подскажите, пожалуйста, какой фреймворк лучше...

Не могу разобраться с Spring Security
Разбираюсь с security. Нашел такой пример: home.jsp: &lt;spring:url...

Как широко применяется MVC в программировании на Java? Стоит ли изучать MVC?
Здравствуйте. Начинающий java-программист. Буквально недавно только закончил...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven....

2
Золотце
141 / 104 / 16
Регистрация: 21.04.2011
Сообщений: 402
04.06.2013, 16:03 2
Neither BindingResult nor plain target object for bean name 'signupForm' available as request attribute
Тут же все написано. В реквест вроде можно положить signupForm.
1
bbk
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 57
04.06.2013, 20:43  [ТС] 3
это как?

Добавлено через 22 минуты
Щито же делать?

Добавлено через 3 часа 54 минуты
Хочу сообщить, что у меня получилось. Просто добавил в формеmodelAttribute="signupForm"
И стало <form:form method="post" commandName="signupForm" modelAttribute="signupForm">
Всем большое спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 20:43

Перевод проекта из Spring Maven в обычный Spring MVC
Здравствуйте. Подскажите, реально ли взять готовый проект, например -...

задания по spring core и spring mvc для новичков
Какие задания можно предложить новичкам для выполнения после знакомства их с...

Jetty embedded + Spring MVC + Spring Security
Добрый день. По роду работы приходилось писать на JavaSE, в том числе и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru