我面临一个找不到任何解决方案的问题...我有一个这样的 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}/>
第二个按钮可以成功获取选定的值并将它们打印到屏幕上。但是,第一个按钮不能。当我尝试在这行代码中调用 myMultiSelection.getValue() 时,它总是会抛出 NullPointerException:
public String saveSelection() {
if (myMultiSelection.getValue() != null) {
它们之间的唯一区别是 fileDownloadActionListener 标记。我想知道该标签是否影响了第一个按钮的内部工作......但是,我仍然需要该标签,因为该按钮的目的是根据所选值生成一个 pdf 文件,并让浏览器下载该文件. 谁能指出我正确的方向?