托管bean不保留输入值,并在单独的JAR中打包后返回null

时间:2011-11-18 11:08:29

标签: java jsf-2 jar cdi managed-bean

我在托管bean中有一个非常奇怪的行为,它没有保留从jsf发送的值,当它处理POST时,属性都是null。

我有一个简单的表单,有2个字段和一个按钮,接收两个字段的值,按钮执行POST方法来处理从JSF收到的数据。在运行调试时,我可以看到按下按钮后,然后使用发送到bean的值执行setter方法(好),但是当它执行mothod时,突然所有属性都为null。

我必须包括,所有这一切都工作正常,当我将所有托管bean(backbeans)移动到一个单独的JAR文件时,它开始于此行为。我知道,如果我再次将文件移动到webapp,那么它将会起作用,但我正在寻找一种不在同一项目中累积太多文件的方法,这对于编译和部署来说需要很长时间。

这是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"));
        }
...

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

在这里找到答案:How does JSF find beans annotated with @ManagedBean?。当然,如果您需要webapp查看托管bean的jar文件,只需在jar文件的META-INF文件夹中包含faces-config.xml文件。