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

У меня очень странное поведение в управляемом компоненте, где он не сохраняет значения, отправленные из 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"));
        }
...

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


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


Ответы (1)


Нашел ответ здесь: Как JSF находит bean-компоненты, аннотированные с помощью @ManagedBean?< /а>. Конечно, если вам нужно, чтобы ваше веб-приложение просматривало ваш jar-файл для управляемых компонентов, включите только файл Faces-config.xml в папку META-INF вашего jar-файла.

person Joe Almore    schedule 18.11.2011