Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / EJB не вытаскивает данные из базы / 8 сообщений из 8, страница 1 из 1
12.01.2012, 18:55:25
    #37611761
danyalov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
Добрый вечер, у меня маленькая проблема. создаю простое приложение на JSF для входа пользователя на сайт по имени и паролю, который уже хранится в базе данных. вробе бы данные выходят, но вот при валидации показывается, что там NULL. выставляю коды, которые я написал. использую базу MySql 5.
Users.java
Код: 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.
package com.example;

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


/**
 * The persistent class for the users database table.
 * 
 */
@Entity
public class Users implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int id;

	private String password;

	private String username;

    public Users() {
    }

	public int getId() {
		return this.id;
	}

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

	public String getPassword() {
		return this.password;
	}

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

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

}



LoginUser.java
Код: 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.
package com.example;

import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean(name="login")
@SessionScoped
public class LoginUser {

	@EJB 
	UserEJB userEJB;
	
	private String username;
	private String password;
	Users users = new Users();
	
	public LoginUser(){}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	};
	
	private void show() {
		System.out.println(username + "|" + password);
	}
	
	public String validLogin() {
		
		userEJB.getData();
		if((username.equals(users.getUsername())) && (password.equals(users.getPassword()))) {
			return "admin";
		}
		else { -- выходит этот код, потому что валидация не прошла
			show(); -- этот код показывает, что данные из формы записались нормально
			System.out.println(users.getUsername() + "|" + users.getPassword()); -- вот это сообщение показывает, что users пуст
			return "fail";
		}
		
	}
	
}



UserEJB.java
Код: 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.
package com.example;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 * Session Bean implementation class UserEJB
 */
@Stateless
@LocalBean
public class UserEJB {

	@PersistenceContext(unitName="ExampleJSF")
	EntityManager em;
	
	private Users users;
	private LoginUser loginUser = new LoginUser();
	
    public UserEJB() {
       
    }
    
    public void getData() {
    	
    	List<Users> list = em.createQuery("select u from Users u where u.username=:username and u.password=:password")
    			.setParameter("username", loginUser.getUsername())
    			.setParameter("password", loginUser.getPassword())
    			.getResultList();
    	
    	if(!list.isEmpty()) {
    		System.out.println("List is not empty"); -- выходит это сообщение, значит данные выбраны
    		users = list.get(0);
    	}
    	else
    	{
    		System.out.println("List is empty");
    	}
    	
    }

}



login.xhtml
Код: html
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.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core">

<h:head>
	<title>Login Page</title>
</h:head>
<h:body>

	<h:form>
		<h:panelGrid columns="3">
			
			<h:outputLabel value="Login:" />
			<h:inputText value="#{login.username}" id="username" title="username" required="true" requiredMessage="The field is required!"/>
			<h:message for="username"/>
			
			<h:outputLabel value="Password" />
			<h:inputSecret value="#{login.password}" id="password" title="password" required="true" requiredMessage="The field is required!" />
			<h:message for="password"/>
			
			<h:commandButton value="Log In" action="#{login.validLogin}" />
			
		</h:panelGrid>
	</h:form>

</h:body>
   
   
</html>



Буду рад вашей помощи.

With Best Regards!
...
Рейтинг: 0 / 0
12.01.2012, 19:03:32
    #37611767
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
1. Полный стек-трейс с исключением
2) Место в коде, где оно вылетает.
...
Рейтинг: 0 / 0
13.01.2012, 09:21:55
    #37612429
danyalov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
никакой ошибки не выдается, просто уже на период валидации пароля с данными, полученными из бд, данные почему то обнуляются, возвращают null.
...
Рейтинг: 0 / 0
13.01.2012, 09:29:39
    #37612442
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
Дебажьте UserEJB.java
Может увидите, где там null появляется.
...
Рейтинг: 0 / 0
13.01.2012, 12:10:59
    #37612706
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
Я не вижу, где и каким образом исползуется Users из класса LoginUsers. Он нигде, по-моему, не заполняется. Может я что-то не замечаю?
...
Рейтинг: 0 / 0
13.01.2012, 12:22:01
    #37612732
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
Мне кажется у Вас в классе UserEJB должен быть метод:

Код: java
1.
2.
3.
4.
public Users getUsers() {
   getData();
   return users;
}



Ну и соответсвенно в классе LiginUser:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public String validLogin() {
		
		users = userEJB.getUser();
		if((username.equals(users.getUsername())) && (password.equals(users.getPassword()))) {
			return "admin";
		}
		else { -- выходит этот код, потому что валидация не прошла
			show(); -- этот код показывает, что данные из формы записались нормально
			System.out.println(users.getUsername() + "|" + users.getPassword()); -- вот это сообщение показывает, что users пуст
			return "fail";
		}
		
	}
...
Рейтинг: 0 / 0
13.01.2012, 13:21:31
    #37612883
eros2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
Не очень внимательно смотрел, но помоему loginUser который у вас в EJB - это совсем не тот "login" который вы используете в JSf-коде. Т.е. в loginUser и должны быть нуллы.
...
Рейтинг: 0 / 0
13.01.2012, 16:02:40
    #37613378
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EJB не вытаскивает данные из базы
danyalov,

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


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