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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring Form Validator + MyBatis 
:(
    Опции темы
spruce
Дата 17.9.2011, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 11.11.2010
Где: Московская обл.

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



Добрый день.

Пытаюсь подключить Form Validator на Spring 3 c использованием запроса к БД через MyBatis 3

Сам класс валидации выглядит так:
Код

public class UserAddFormValidator implements Validator {

    @Resource(name = "userMapper")
    private UserMapper userMapper;
    
    @Override
    public boolean supports(Class<?> clazz) {
        return UserAddForm.class.equals(clazz);
    }

    @Override
    public void validate(Object obj, Errors errors) {
        
        UserAddForm form = (UserAddForm) obj;
        
        if(userMapper.selectUserByUsername(form.getUsername()) != null){
            errors.rejectValue("username", "username.alreadyExist","Username already exist");
        }
    }
}


Почему может на строчке if(userMapper.selectUserByUsername(form.getUsername()) != null) вываливаться в exception:
Код

java.lang.NullPointerException
    form.UserAddFormValidator.validate(UserAddFormValidator.java:37)


Делаю точно также, в одном из контроллеров. В нем у меня userMapper.selectUserByUsername(form.getUsername()) нормально срабатывает, возвращает результат. И вобще, до использования валидатора, mybatis вобще никаких проблем не вызывал.

Такое впечатление, что не связывается userMapper с бином, но почему, не пойму:
Код

    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="mapper.UserMapper" />
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>


Подскажите, пожалуйста.



PM MAIL   Вверх
spruce
Дата 19.9.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 11.11.2010
Где: Московская обл.

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



Выяснил, что у меня проблема не конкретно с myBatis, а с тем, что я не могу проинжектить вобще любой бин (объявил в xml файле) в мой класс, который не является контроллером и нет @RequestMapping(...).

Как заставить проинициализировать этот бин, который объявлен в моем классе как приватная переменная?

У меня работает, только если это контроллер и есть какой-то @RequestMapping("test")... 
Например, вот так:
Код


package resource;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import domain.User;
import mapper.UserMapper;

@Controller
public class UTest {

    @Resource(name = "userMapper")
    private UserMapper userMapper;
    
    @RequestMapping("test")
    public ModelAndView test(){
        User user= userMapper.selectUserByUsername("spruce");
        return new ModelAndView("test","user",user);
    }
}


Если же это обычный класс, то ничего не работает, переменная не инициализируется...
Код


package resource;

import javax.annotation.Resource;

import domain.User;
import mapper.UserMapper;

public class UTest {

    @Resource(name = "userMapper")
    private UserMapper userMapper;

    public User test(String username){
        return userMapper.selectUserByUsername(username);
    }
}

Спринговский мануал по аннотацим (и вобще про инжектирование) перелопатил вдоль и поперек...не пойму почему не работает... Пробовал добавлять и @Component, и @Service (в интернете вычитал), все равно не работает... что-то я делаю не так...


Это сообщение отредактировал(а) spruce - 19.9.2011, 11:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1007 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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