Я столкнулся с проблемой, для которой я не смог найти никакого разрешения... У меня есть компонент selectManyChoice, подобный этому:
<af:selectManyChoice value="#{bindings.my_VO1.inputValue}"
label="myLabel" id="smc1"
binding="#{pageFlowScope.myBean.myMultiSelection}"
autoSubmit="true">
<f:selectedItems value="#{bindings.my_VO1.items}" id="si1"/>
</af:selectManyChoice>
Для получения значений я тестировал с помощью 2 таких кнопок:
<af:commandButton text="First Button"
id="cb1"
action="#{pageFlowScope.myBean.saveSelection}>
<af:fileDownloadActionListener method="#{pageFlowScope.myBean.exportReport}"/>
</af:commandButton>
А также:
<af:commandButton text="Second Button"
id="cb2"
action="#{pageFlowScope.myBean.saveSelection}/>
Вторая кнопка может успешно получить выбранные значения и распечатать их на экране. Однако первая кнопка не могла. Это всегда вызывало исключение NullPointerException, когда я пытался вызвать myMultiSelection.getValue() в этой строке кода:
public String saveSelection() {
if (myMultiSelection.getValue() != null) {
Единственная разница между ними — тег fileDownloadActionListener. Интересно, влияет ли этот тег на внутреннюю работу первой кнопки... Однако мне все еще нужен этот тег, поскольку цель кнопки - создать файл PDF на основе выбранных значений и загрузить этот файл в браузере. . Может ли кто-нибудь указать мне правильное направление?