Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces拾取列表dualList对象变为空_Primefaces_Jsf 2_Picklist - Fatal编程技术网

Primefaces拾取列表dualList对象变为空

Primefaces拾取列表dualList对象变为空,primefaces,jsf-2,picklist,Primefaces,Jsf 2,Picklist,加载对象时,pickList dualList对象变为空 这是拾取列表定义 <p:pickList id="queuesPickList" value="#{manageApplications.dualListQueuesToBeAddedToTheApplication}" var="queueToAdd" itemLabel="#{queueToAdd}" itemValue="#{queueToAdd}"> </p:p

加载对象时,pickList dualList对象变为空

这是拾取列表定义

<p:pickList id="queuesPickList" 
            value="#{manageApplications.dualListQueuesToBeAddedToTheApplication}" 
            var="queueToAdd" itemLabel="#{queueToAdd}" itemValue="#{queueToAdd}">
</p:pickList>
现在,.target和.souce都为空。这里面没有任何物体 那里

在阅读Primefaces文档时,它说需要转换器来处理您自己的类型。因为我使用的是简单的字符串列表,它是pickList组件的本机对象,所以我没有构建转换器类

我做错了什么

致以最良好的祝愿, Neliosam

代码没有问题。这个问题与范围有关

拾取列表正在模态对话框窗口中使用,但不知何故,这并没有将更改反映到dualList组件中

我已经从对话框窗口中删除了该组件,并将其添加到仅在需要时使用rendered={booleanCondition}进行渲染的

我无法确切解释使用模式对话框窗口时的限制,但它阻止组件更新变量

希望这能帮助其他人面对同样的问题

代码没有问题。这个问题与范围有关

拾取列表正在模态对话框窗口中使用,但不知何故,这并没有将更改反映到dualList组件中

我已经从对话框窗口中删除了该组件,并将其添加到仅在需要时使用rendered={booleanCondition}进行渲染的

我无法确切解释使用模式对话框窗口时的限制,但它阻止组件更新变量


希望这能帮助其他人面对同样的问题

那么,你在表单中的对话框中有选择列表?现在它在对话之外,但仍然在形式上;表单是唯一的,我使用模板来构建页面。选择列表最初设计为在模式对话框窗口中,我发现使用对话框窗口有您的限制。我已经更改了代码,将拾取列表放在一个面板中,该面板仅在需要时呈现。我觉得对话框中没有表单,而对话框最后一个在页面中?这就是正确的方法,对话框中有表单。表单出现在模板页面的前面,然后将appendTo=@body放在上面。我怀疑你的结论,即picklist有什么特殊之处,使得它无法在dialogs中工作。如果你在表单中的对话框中有picklist,你会这样做吗?现在它在对话之外,但仍然在形式上;表单是唯一的,我使用模板来构建页面。选择列表最初设计为在模式对话框窗口中,我发现使用对话框窗口有您的限制。我已经更改了代码,将拾取列表放在一个面板中,该面板仅在需要时呈现。我觉得对话框中没有表单,而对话框最后一个在页面中?这就是正确的方法,对话框中有表单。表单出现在模板页面的前面,然后将appendTo=@body放在上面。我怀疑你的结论,即“挑选名单”的特殊之处在于它不能在对话中工作
private List<String> queuesSouce = new ArrayList<>();
private List<String> queuesTarget = new ArrayList<>();
private DualListModel<String> dualListQueuesToBeAddedToTheApplication;
<p:commandButton value="SAVE" id="saveQueuesButton" 
                 actionListener="#{manageApplications.saveQueuesToTheApplication()}"
                 oncomplete="PF('dlgAddQueuesToApplication').hide();"
                 update="addQueuesToApplicationPanel">
</p:commandButton>
public void saveQueuesToTheApplication() {       
            System.out.println(this.dualListQueuesToBeAddedToTheApplication.getTarget());
    }