如何在bean中使用带有@Post构造列表的两个数组

时间:2015-02-27 13:25:21

标签: java jsf-2

我需要你帮助用@Post Construct在bean中定义两个数组列表。我需要从数组列表中检索值并在2 selectmanycheckbox组件中显示它们。

代码是:

private String[] selectedA;
private List<String> A;

@PostConstruct
public void init() {
    A = new ArrayList<String>();
    A.add("A");
    A.add("B");
}

private String[] selectedB;
private List<String> B;

@PostConstruct
public void initBB() {
    B = new ArrayList<String>();
    B.add("C");
    B.add("D");
}

但是如果我使用上述方式会显示错误,那么请你帮忙

2 个答案:

答案 0 :(得分:0)

  

我需要你帮助用@Post Construct在bean中定义两个数组列表。

如果我理解正确(类不完整),您有两个注释@PostConstruct的方法。只允许一个,只有一个会导致某种错误。

因此,只使用一个@PostConstruct方法,并初始化其中的两个数组:

private List<String> a;
private List<String> b;

@PostConstruct
public void init() {
    a = new ArrayList<String>();
    a.add("A");
    a.add("B");

    b = new ArrayList<String>();
    b.add("C");
    b.add("D");
}

可以找到@PostConstruct的{​​{1}}的JavaDoc,它说:

  

此注释只能注释一种方法。

答案 1 :(得分:0)

如果使用两个@PostConstruct方法,则行为将无法预测。

参考:http://www.coderanch.com/t/428906/java-EJB-SCBCD/certification/PostConstruct-methods

试试这个:

private String[] selectedA;
private List<String> A;
private String[] selectedB;
private List<String> B;

@PostConstruct
public void init() {
    A = new ArrayList<String>();
    A.add("A");
    A.add("B");

    B = new ArrayList<String>();
    B.add("C");
    B.add("D");
}

或者,如果您需要两种方法来初始化数组:

private String[] selectedA;
private List<String> A;
private String[] selectedB;
private List<String> B;

@PostConstruct
public void init() {
    A = new ArrayList<String>();
    A.add("A");
    A.add("B");

    initBB();
}

public void initBB() {
    B = new ArrayList<String>();
    B.add("C");
    B.add("D");
}