У меня есть 2 идентично структурированных bean-компонента и 2 идентично структурированных оператора get, но работает только один - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть две бины, которые имеют одинаковую структуру. Я тащу оба этих бина в один и тот же класс Java одинаково. Но только у одного из них есть проблема.

Вот ошибка, когда я пытаюсь ее построить:

не может найти символ символ: конструктор BalanceBean (java.lang.String) местоположение: класс HWpackage.BalanceBean

Вот рабочий бин, UserBean2

package HWpackage;

public class UserBean2 {
  private String id;

  public UserBean2(String id) {
    setUsername(id);
  }

  public String getUsername() {
    return(id);
  }

  public void setUsername(String id) {
    if (!isMissing(id)) {
      this.id = id;
    }
  }

  private boolean isMissing(String value) {
    return((value == null) || (value.trim().equals("")));
  }
}

А вот рабочие операторы getter:

  UserBean2 userBean2 = (UserBean2)session.getAttribute("userBean2");
  String un = request.getParameter("id");
  userBean2 = new UserBean2(un);
  session.setAttribute("userBean2", userBean2);

Теперь сравните это с нерабочим кодом.

BalanceBean:

package HWpackage;

public class BalanceBean {
  private String balance, id;

  public BalanceBean (String balance, String id) {
    setBalance(balance);
    setID(id);
  }

  public String getBalance() {
    return(balance);
  }

  public void setBalance(String balance)
  {
      this.balance = balance;
  }

  public String getID() {
    return(id);
  }

  public void setID(String id)
  {
      this.id = id;
  }
}

И его геттерные операторы:

BalanceBean balanceBean = (BalanceBean)session.getAttribute("balanceBean");
String balance = request.getParameter("balance");
balanceBean = new BalanceBean(balance);
session.setAttribute("balanceBean", balanceBean);

По какой-либо причине BalanceBean в строке: balanceBean = new BalanceBean (balance); вызывает все проблемы.

Может кто-нибудь сказать, пожалуйста, почему?

ОБНОВЛЕНИЕ: Хорошо, если я изменю свой BalanceBean на:

package HWpackage;

public class BalanceBean {
  private String balance, id;

  public BalanceBean (String balance) {
    setBalance(balance);        
  }

  public String getBalance() {
    return(balance);
  }

  public void setBalance(String balance)
  {
      this.balance = balance;
  }

  public String getID() {
    return(id);
  }

  public void setID(String id)
  {
      this.id = id;
  }
}

Как мне добавить свой идентификатор строки?

Ответы [ 4 ]

4 голосов
/ 19 апреля 2011

Они не идентичны, и ошибка говорит вам точно, что не так:

cannot find symbol symbol : constructor BalanceBean(java.lang.String)

У вас нет конструктора в BalanceBean, который принимает String в качестве единственного аргумента.

У вас есть:

public BalanceBean (String balance, String id) 

И вы пытаетесь вызвать:

balanceBean = new BalanceBean(balance);

Редактировать: Если вы хотите добавить второй конструктор, выболее чем способен:

public BalanceBean (String balance) {
    setBalance(balance);
}
1 голос
/ 19 апреля 2011

BalanceBean имеет конструктор с двумя аргументами.public BalanceBean (String balance, String id).Вы передаете только один аргумент new BalanceBean(balance)

0 голосов
/ 19 апреля 2011

Конструктор BalanceBeam (String, String) ожидает 2 параметра, и вы предоставляете ему только один параметр.Поэтому необходим новый конструктор типа BalanceBeam (String)

0 голосов
/ 19 апреля 2011

Посмотрите на конструкторы класса BalanceBean, похоже, вы не определили конструктор только с одним параметром.

...