В окне списка (например, в поле списка A) содержатся значения, и если я нажму кнопку (например, кнопку X), она добавит выбранное значение в другой список (например, в поле списка B) , После этого действия в окне списка B будет отображаться значение выбора.Переменная с областью видимости в поле списка
В список коробки B (предположим, он имеет значения из блока списка А), если нажать на другую кнопку (например, кнопку Y), выбранное значение из блока списка B возвращает в список ящик
я следую ответ из этого post и попробуйте применить код к списку.
Когда я запустил его, я могу добавить значение (только одно значение) из поля списка A. Но я не могу переместить значение из поля списка B в поле списка A. Я думаю, причина может быть связана с другой областью переменной: list box. Использовать переменную области видимости вида и поле списка B использовать переменную области сеанса.
Я ищу различные сообщения в stackoverflow об изменении переменной области обмена в окне списка, но у меня все еще нет этой идеи.
Я размещаю код, потому что это полезно. Спасибо за вашу помощь.
<xp:table style="width:500.0px"><xp:tr><xp:td>B list box </xp:td>
<xp:td></xp:td>
<xp:td>A list box </xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:listBox id="listBox5" value="#{sessionScope.BLstBoxItem}" style="width:100.0px">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:if (!viewScope.selectItems)
{
viewScope.selectItems = ["a","c","g"];
}
return viewScope.selectItems;}]]></xp:this.value>
</xp:selectItems>
</xp:listBox></xp:td>
<xp:td>
<xp:button id="button4" style="width:250.0px">
<xp:this.value><![CDATA[<------ Values move to B list box]]> </xp:this.value>
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
viewScope.selectItems.add(viewScope.ALstBoxItem);
viewScope.ALstBoxItem = "";
/*
for(var i in ALstBoxItem){
i--
}
return ALstBoxItem;
*/}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button id="button2" style="width:250.0px">
<xp:this.value><![CDATA[Values move to A list box ------>]]></xp:this.value>
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
sessionScope.selectItems.add(sessionScope.BLstBoxItem);
sessionScope.BLstBoxItem = "";
/*
for(var i in LLstBoxItem){
i--
}
return BLstBoxItem;
*/}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:td>
<xp:td>
<xp:listBox id="listBox4"
value="#{viewScope.ALstBoxItem}" style="width:100.0px">
<xp:selectItem itemLabel="a"></xp:selectItem>
<xp:selectItem itemLabel="b"></xp:selectItem>
<xp:selectItem itemLabel="c"></xp:selectItem>
<xp:selectItem itemLabel="d"></xp:selectItem>
<xp:selectItem itemLabel="e"></xp:selectItem>
<xp:selectItem itemLabel="f"></xp:selectItem>
<xp:selectItem itemLabel="g"></xp:selectItem>
<xp:selectItem itemLabel="h"></xp:selectItem>
<xp:selectItem itemLabel="i"></xp:selectItem>
<xp:selectItem itemLabel="j"></xp:selectItem>
</xp:listBox>
</xp:td>
</xp:tr>
</xp:table>
Большое спасибо за ваш ответ. Когда я все еще смотрю на этот [сайт] (http://www.xpagedomino.com/2015/02/xpages-scoped-variables.html), ваш ответ решает мою проблему. Большое спасибо. – Learner
Я иногда путаюсь между переменной области сеанса и переменной области видимости, после того как я прочитал этот ответ, это делает мою концепцию понятной. – Learner
Я больше разбираюсь в окне списка, я обнаружил, что есть опция, позволяющая использовать несколько вариантов, когда я включаю опцию для двух списков и запускаю код. Программа не позволяет мне переместить несколько значений и дать мне это исключение: java.util.ArrayList несовместим с javax.faces.model.SelectItem – Learner