Hirdetés

Keresés

Új hozzászólás Aktív témák

  • modder
    aktív tag

    Ja valami kód is:
    package com.corejsf;

    public class User {
    private String name;
    private String password;

    public User(String name, String password){
    this.name = name;
    this.password = password;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    package com.corejsf;

    import java.io.Serializable;
    import java.util.*;
    import javax.faces.bean.*;

    @ManagedBean(name="userbean")
    @SessionScoped
    public class UserBean implements Serializable{
    private String name;
    private String password;
    private String userListToString;
    private static List userList = new ArrayList();
    private User user;

    public String addUser(){
    user = new User(name, password);
    userList.add(user);
    userListToString = userList.toString();
    if (userList.contains(user)){
    return "thankYou";
    }
    else {
    return "loginFail";
    }
    }

    public String loginUser(){
    user = new User(name, password);
    userListToString = userList.toString();
    if(userList.contains(user)){
    return "thankYou";
    }
    else{
    return "loginFail";

    }
    }

    public String getUserListToString() {
    return userListToString;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    Illetve a private static List userList = new ArrayList();-t tedd inkább egy @ApplicationScoped bean-be nem static-ként, mert semmi garancia nincs rá, hogy egy konkurens felhasználó, akit másik http worker szál szolgál ki szerver oldalon, ugyanazt fogja látni a userList-ből.

  • Mukorka
    addikt

    Ja valami kód is:
    package com.corejsf;

    public class User {
    private String name;
    private String password;

    public User(String name, String password){
    this.name = name;
    this.password = password;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    package com.corejsf;

    import java.io.Serializable;
    import java.util.*;
    import javax.faces.bean.*;

    @ManagedBean(name="userbean")
    @SessionScoped
    public class UserBean implements Serializable{
    private String name;
    private String password;
    private String userListToString;
    private static List userList = new ArrayList();
    private User user;

    public String addUser(){
    user = new User(name, password);
    userList.add(user);
    userListToString = userList.toString();
    if (userList.contains(user)){
    return "thankYou";
    }
    else {
    return "loginFail";
    }
    }

    public String loginUser(){
    user = new User(name, password);
    userListToString = userList.toString();
    if(userList.contains(user)){
    return "thankYou";
    }
    else{
    return "loginFail";

    }
    }

    public String getUserListToString() {
    return userListToString;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    Ha már tanácsadás megy nagyban: A ManagedBean name értéke lehetne userBean , nem pedig userbean.
    Ha Serializable interface-t implementálsz akkor pedig vagy legyen serialVersionUID megadva (ezt generálja magától az eclipse is ha megkéred rá) vagy legyen Annotálva az osztály : @SuppressWarnings("serial").
    Kerüld a "felkiáltójeles" kódot! ;)

    Ui: inkább cseréld le a listában tárolt user megoldást adatbázisban tároltra.

  • skoda12
    aktív tag

    Ja valami kód is:
    package com.corejsf;

    public class User {
    private String name;
    private String password;

    public User(String name, String password){
    this.name = name;
    this.password = password;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    package com.corejsf;

    import java.io.Serializable;
    import java.util.*;
    import javax.faces.bean.*;

    @ManagedBean(name="userbean")
    @SessionScoped
    public class UserBean implements Serializable{
    private String name;
    private String password;
    private String userListToString;
    private static List userList = new ArrayList();
    private User user;

    public String addUser(){
    user = new User(name, password);
    userList.add(user);
    userListToString = userList.toString();
    if (userList.contains(user)){
    return "thankYou";
    }
    else {
    return "loginFail";
    }
    }

    public String loginUser(){
    user = new User(name, password);
    userListToString = userList.toString();
    if(userList.contains(user)){
    return "thankYou";
    }
    else{
    return "loginFail";

    }
    }

    public String getUserListToString() {
    return userListToString;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    Az elottem szolokhoz meg annyit tennek hozza, hogy ha csak a contains()-t hasznalod egyelore, akkor ArrayList helyett erdemes lenne LinkedHashSetet hasznalnod. Ez a sorrendet is tartja es hatekonyabb a contains() hivas. + a collectionoknek adj meg generic tipust is <> koze.

  • Mukorka
    addikt

    Ja valami kód is:
    package com.corejsf;

    public class User {
    private String name;
    private String password;

    public User(String name, String password){
    this.name = name;
    this.password = password;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    package com.corejsf;

    import java.io.Serializable;
    import java.util.*;
    import javax.faces.bean.*;

    @ManagedBean(name="userbean")
    @SessionScoped
    public class UserBean implements Serializable{
    private String name;
    private String password;
    private String userListToString;
    private static List userList = new ArrayList();
    private User user;

    public String addUser(){
    user = new User(name, password);
    userList.add(user);
    userListToString = userList.toString();
    if (userList.contains(user)){
    return "thankYou";
    }
    else {
    return "loginFail";
    }
    }

    public String loginUser(){
    user = new User(name, password);
    userListToString = userList.toString();
    if(userList.contains(user)){
    return "thankYou";
    }
    else{
    return "loginFail";

    }
    }

    public String getUserListToString() {
    return userListToString;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPassword() {
    return password;
    }

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

    A loginUser fv hiába csinál a meglévő adatokkal új user objektumot , az mint példány még nincs benne az arraylist-ben ezért lesz false. Mivel nem írtad felül az equals függvényt a User osztályban így az alapértelmezett (örökölt) equals azt nézi hogy ugyan az-e a két objektum memóriában tárolt elérési címe. Ez azért lényeges mivel az ArrayList is a tárolt elemek equals függvényét használja ahhoz hogy megmondja mi van a listában és mi nincs.

Új hozzászólás Aktív témák