Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Управляемый компонент не сохраняет входные значения и возвращает значение null после упаковки в отдельный JAR

Автор вопроса: Joe AlmoreОтветов: 1

У меня очень странное поведение в управляемом компоненте, где он не сохраняет значения, отправленные из jsf, и когда он собирается обрабатывать POST, все свойства равны нулю.

JSF, который у меня есть, представляет собой простую форму с 2 полями и кнопкой, значения двух полей принимаются, а кнопка выполняет метод POST для обработки данных, полученных от JSF. При запуске отладки я вижу, что после нажатия кнопки методы установки выполняются со значениями, отправленными в компонент (хорошо), но когда он переходит к выполнению метода, все свойства внезапно становятся нулевыми.

Я должен добавить, что раньше все это работало нормально, это началось с такого поведения, когда я переместил все управляемые компоненты (backbeans) в отдельный файл JAR. Я знаю, что если я снова перемещу файлы в веб-приложение, то это сработает, но я ищу способ не накапливать слишком много файлов в одном проекте, это занимает слишком много времени для компиляции и развертывания.

Вот код backbean и JSF:

@Named
@RequestScoped
public class RegisterController implements Serializable {
private String accountType;

public String getAccountTypes() {
    return accountType;
}

public void setAccountTypes(String accountType) {
    this.accountType = accountType;   // Here it stores the value ********
}

private String businessType;

public String getBusinessType() {
    return businessType;
}

public void setBusinessType(String businessType) {
    this.businessType = businessType;    // Here it stores the other value *******
}

// Method called with the button
public String prepareCreate() {
    if ("PERSONAL".equals(getAccountTypes()))  // Here is null!!  *************
    {
        return "PersonalSignup";
    }
    else
        if (businessType == null)  // Here is also null!! ************
        {
            JsfUtil.addErrorMessage(
                    new Exception(""), ResourceBundle.getBundle(CommonUtil.bundleStr).getString("cc.signup.accounttype.invalid.businesstype"));
        }
...

Любая помощь будет очень признательна, спасибо.

  • Во-первых, вы поступили бы правильно, назвав геттеры/сеттеры так же, как и переменную. Как accountType => setAccountType(String accountType). Sebastian Wramba 18.11.2011
  • Извините, это была опечатка, сейчас исправлено. Joe Almore 18.11.2011

javajarcdijsf-2managed-bean

Ответы

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы