Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Добавление записи / 11 сообщений из 11, страница 1 из 1
07.08.2017, 13:40
    #39501208
Norman94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Здравствуйте. Пытаюсь добавить запись в БД, используя JSF и сервер GlassFish

Класс-сущность

Код: 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.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
package models;

import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name="user")
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
public class User implements Serializable  {
    
    @Id
    @Column(name="id")
    public int id;
    
    @Column(name="FIO")
    public String FIO;
    
    @Column(name="position")
    public String position;
    
    @Column(name="date_of_bird")
    public String dateOfBird;
    
    @Column(name="date_of_begining")
    public String dateOfBegining;
     
    @Column(name="login")
    public String login;
    
    @Column(name="password")
    public String password;
    
    public User()
    {}

    public int getId() {
        return id;
    }

    public String getFIO() {
        return FIO;
    }

    public String getPosition() {
        return position;
    }

    public String getDateOfBird() {
        return dateOfBird;
    }

    public String getDateOfBegining() {
        return dateOfBegining;
    }
    
    public String getLogin() {
        return login;
    }

    public String getPassword() {
        return password;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setFIO(String FIO) {
        this.FIO = FIO;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public void setDateOfBird(String dateOfBird) {
        this.dateOfBird = dateOfBird;
    }

    public void setDateOfBegining(String dateOfBegining) {
        this.dateOfBegining = dateOfBegining;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}



Класс-менеджер

Код: 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.
package managers;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;
import javax.persistence.TypedQuery;

import models.User;

public class UserManager {
    
    public EntityManager em = Persistence.createEntityManagerFactory("Cars").createEntityManager();
    
    public UserManager()
    { }
    
    public User add(User user)
    {
        em.getTransaction().begin();
        User drs = em.merge(user);
        em.getTransaction().commit();
        return drs;
    }
    
    public void delete(int id)
    {
        em.getTransaction().begin();
        em.remove(get(id));
        em.getTransaction().commit();
    }
    
    public User get (int id)
    {
        return em.find(User.class, id);
    }
    
    public void update(User user)
    {
        em.getTransaction().begin();
        em.merge(user);
        em.getTransaction().commit();
    }
    
    public List<User> getAll()
    {
        TypedQuery<User> namedQuery = em.createNamedQuery("User.findAll", User.class);
        return namedQuery.getResultList();
    }
}



Бизнес-логика

Код: 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.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
package main;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;


import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import models.User;
import managers.UserManager;
import models.Drivers;
import managers.DriversManager;

@ManagedBean (name="Main") 
@SessionScoped             
public class MainBean {
    
    public User user;
    public UserManager usManager;
    public Drivers driver;
    public DriversManager dm;
    
    public String login;
    public String password;

    public List<User> users;
    public List<Drivers> drivers;
    
    public int selectedId;
    public String selectedFIO;
    public String selectedPosition;
    public String selectedDateBirth;
    public String selectedDateBegin;
    public String selectedlogin;
    public String selectedPassword;
    
    public MainBean()
    {
        getDriv();
    }

    public int getSelectedId() {
        return selectedId;
    }

    public String getSelectedFIO() {
        return selectedFIO;
    }

    public String getSelectedPosition() {
        return selectedPosition;
    }

    public String getSelectedDateBirth() {
        return selectedDateBirth;
    }

    public String getSelectedDateBegin() {
        return selectedDateBegin;
    }

    public String getSelectedlogin() {
        return selectedlogin;
    }

    public String getSelectedPassword() {
        return selectedPassword;
    }

    public void setSelectedId(int selectedId) {
        this.selectedId = selectedId;
    }

    public void setSelectedFIO(String selectedFIO) {
        this.selectedFIO = selectedFIO;
    }

    public void setSelectedPosition(String selectedPosition) {
        this.selectedPosition = selectedPosition;
    }

    public void setSelectedDateBirth(String selectedDateBirth) {
        this.selectedDateBirth = selectedDateBirth;
    }

    public void setSelectedDateBegin(String selectedDateBegin) {
        this.selectedDateBegin = selectedDateBegin;
    }

    public void setSelectedlogin(String selectedlogin) {
        this.selectedlogin = selectedlogin;
    }

    public void setSelectedPassword(String selectedPassword) {
        this.selectedPassword = selectedPassword;
    }

    public List<User> getUsers() {
        return users;
    }
    
    public User getUser() {
        return user;
    }

    public String getLogin() {
        return login;
    }

    public String getPassword() {
        return password;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public void setUsManager(UserManager usManager) {
        this.usManager = usManager;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
    public UserManager getUsManager() {
        return usManager;
    }
    
    public String addUsers()
    {
        user = new User();
        user.setFIO(selectedFIO);
        user.setPosition(selectedPosition);
        user.setDateOfBird(selectedDateBirth);
        user.setDateOfBegining(selectedDateBegin);
        user.setLogin(selectedlogin);
        user.setPassword(selectedPassword);
        usManager.add(user);
        return "index.xhtml";
    }
}



Страница

Код: 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.
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
     
 <h:head>
     <title>Страница регистрации пользователей</title>
 </h:head>
 <f:view>
 <h:body>
    <h:form>
        <h:panelGrid columns="2" border="0">
            <h:outputText value="Введите ФИО"/>
            <h:inputText value="#{Main.selectedFIO}" />
            <h:outputText value="Введите должность"/>
            <h:inputText value="#{Main.selectedPosition}"/>
            <h:outputText value="Введите Дату рождения"/>
            <h:inputText value="#{Main.selectedDateBirth}"/>
            <h:outputText value="Введите Дату поступления на работу"/>
            <h:inputText value="#{Main.selectedDateBegin}"/>
            <h:outputText value="Введите login"/>
            <h:inputText value="#{Main.selectedlogin}"/>
            <h:outputText value="Введите password"/>
            <h:inputText value="#{Main.selectedPassword}"/>
        </h:panelGrid>   
        <h:commandButton value="Зарегестрировать" action="#{Main.addUsers}" />
    </h:form>
</h:body>
</f:view>
    </html>



Но выпадает ошибка

Код: 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.
FATAL:   JSF1073: javax.faces.FacesException caught during processing of INVOKE_APPLICATION 5 : UIComponent-ClientId=, Message=#{Main.addUsers}: java.lang.NullPointerException
FATAL:   #{Main.addUsers}: java.lang.NullPointerException
javax.faces.FacesException: #{Main.addUsers}: java.lang.NullPointerException
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
	at java.lang.Thread.run(Thread.java:748)
Caused by: javax.faces.FacesException: #{Main.addUsers}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	... 31 more
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 35 more
Caused by: java.lang.NullPointerException
	at main.MainBean.addUsers(MainBean.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.sun.el.parser.AstValue.invoke(AstValue.java:289)
	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
	... 36 more



Помогите понять, почему так происходит?
...
Рейтинг: 0 / 0
07.08.2017, 13:48
    #39501215
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Norman94
Код: plaintext
1.
Caused by: java.lang.NullPointerException
	at  main.MainBean.addUsers(MainBean.java:179 )
Помогите понять, почему так происходит?Потому, что кто-то не инициализирует обязательные поля?
...
Рейтинг: 0 / 0
07.08.2017, 13:54
    #39501218
Norman94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Basil A. Sidorov,

Но я их инициализирую в MainBean
...
Рейтинг: 0 / 0
07.08.2017, 13:56
    #39501219
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Чет не догоняю, а каким образом инъектится UserManager ?
...
Рейтинг: 0 / 0
07.08.2017, 14:00
    #39501221
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Basil A. SidorovNorman94
Код: plaintext
1.
Caused by: java.lang.NullPointerException
	at  main.MainBean.addUsers(MainBean.java:179 )
Помогите понять, почему так происходит?Потому, что кто-то не инициализирует обязательные поля?
Он их не затрагивает в приведенном коде, если ты про users и cars.

Код: java
1.
2.
    @EJB
    public UserManager usManager;




Код: java
1.
2.
@Stateless
UserManager 
...
Рейтинг: 0 / 0
07.08.2017, 14:01
    #39501222
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Точнее даже так:

Код: java
1.
2.
    @EJB
    private UserManager usManager;



второе более подбронее:

Код: java
1.
2.
@Stateless
class UserManager ....
...
Рейтинг: 0 / 0
07.08.2017, 14:11
    #39501229
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Да и транзакции в таком случае будут декларативно управляться.
...
Рейтинг: 0 / 0
07.08.2017, 15:01
    #39501279
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
HettОн их не затрагивает в приведенном коде, если ты про users и cars.Я про то, что в процитированном куске MainBean.java - 155 строк, поэтому автору лучше видно, почему в 179-й строке появляется null-значение.
...
Рейтинг: 0 / 0
07.08.2017, 15:03
    #39501281
Norman94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Basil A. Sidorov,

Я сократил ненужное (хотя я говнокодер)

Он ссылается на эту строку

usManager.add(user);
...
Рейтинг: 0 / 0
07.08.2017, 15:05
    #39501285
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Norman94,

ну вам уже ответ дали, не проинициализирован у вас usManager.
пример того, как это сделать я привел выше.
...
Рейтинг: 0 / 0
07.08.2017, 15:16
    #39501297
Norman94
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи
Hett,

Господи, какая тупая ошибка(
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Добавление записи / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]