Jsf PrimeFaces PickList组件,如何将所有目标值获取到一个InputText组件?
我用一个Jsf PrimeFaces PickList组件,如何将所有目标值获取到一个InputText组件?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我用一个inputText和一个commandButton组件创建了xhtml页面。当我点击按钮时,显示的是overlypanel,带有pickList,列表下有一个commandButton。我想获取所有目标值并将其放入inputText(此组件必须只有一个)。你能帮我怎么做吗 下面是我目前编写的xhtml代码: <h:panelGrid id="displayPlayers" columns="3"> <ui:repeat value="#{pickList
inputText
和一个commandButton
组件创建了xhtml页面。当我点击按钮时,显示的是overlypanel
,带有pickList
,列表下有一个commandButton
。我想获取所有目标值并将其放入inputText
(此组件必须只有一个)。你能帮我怎么做吗
下面是我目前编写的xhtml代码:
<h:panelGrid id="displayPlayers" columns="3">
<ui:repeat value="#{pickListBean.players.target}" var="player">
<p:inputText id="input2" value="#{player.name}" />
</ui:repeat>
<p:commandButton id="overPanBtn2" value="overPanBtn2" type="button" />
</h:panelGrid>
<p:overlayPanel id="chartPanel2" for="overPanBtn2" hideEffect="fade">
<p:pickList id="pickList4" value="#{pickListBean.players}" var="player" itemLabel="#{player}" itemValue="#{player}" converter="playerConverter">
<p:column style="width:75%;">
#{player.name}
</p:column>
<p:column style="width:75%;">
#{player.number}
</p:column>
</p:pickList>
<p:commandButton id="playerSubmit4" value="Ok" update="displayPlayers" style="margin-top:5px" />
</p:overlayPanel>
#{player.name}
#{player.number}
我将非常感谢您的帮助。在您的情况下,应该是这样的,您只需遵循: XHTML
<p:pickList id="pickList4" value="#{pickListBean.players}" var="player" itemLabel="#{player}" itemValue="#{player}" converter="playerConverter">
<p:ajax event="transfer" listener="#{pickListBean.onTransfer}" update="msg" />
<p:column style="width:75%;">
#{player.name}
</p:column>
<p:column style="width:75%;">
#{player.number}
</p:column>
</p:pickList>
只需在传输发生时调用事件,并将目标值保存到字符串中。然后将此字符串属性绑定到一个
p:inputText
在您的情况下,它应该是这样的,您只需遵循:
XHTML
<p:pickList id="pickList4" value="#{pickListBean.players}" var="player" itemLabel="#{player}" itemValue="#{player}" converter="playerConverter">
<p:ajax event="transfer" listener="#{pickListBean.onTransfer}" update="msg" />
<p:column style="width:75%;">
#{player.name}
</p:column>
<p:column style="width:75%;">
#{player.number}
</p:column>
</p:pickList>
只需在传输发生时调用事件,并将目标值保存到字符串中。然后将此字符串属性绑定到一个
p:inputText
如果您说“组件必须只有一个”,则无法理解为什么需要。你可能需要。onTransfer方法应该计算您需要的字符串,并将其作为输入标记的字段使用。我尝试不使用ui:仅使用
重复标记,但它不能像我希望的那样工作。我将尝试使用f:ajax
标记。因此我需要删除ui:repeat
标记,但是将{pickListBean.players.target}
放在哪里?我需要在哪里添加f:ajax
标记呢?f:ajax
必须进入事件将发生的组件中,对于您的案例,必须进入
和
。您想要控制的事件是@skegg99所说的传输
。因此,在你的支持bean中创建一个String
属性,以连接所选的播放器,例如pickListBean.selectedPlayerNames
。当传输发生在pickList
中时,将调用侦听器,在这里您必须将pickListBean.players.target
值分配给您的属性。之后,将使用选定的值更新面板。你不需要ui:repeat
。我听不懂你的问题。您有一个固有存储多个值的组件。现在,您希望这些多个值显示在一个组件中,同时只能容纳一个值?如果您说“组件必须只有一个”,您无法理解为什么需要。你可能需要。onTransfer方法应该计算您需要的字符串,并将其作为输入标记的字段使用。我尝试不使用ui:仅使用
重复标记,但它不能像我希望的那样工作。我将尝试使用f:ajax
标记。因此我需要删除ui:repeat
标记,但是将{pickListBean.players.target}
放在哪里?我需要在哪里添加f:ajax
标记呢?f:ajax
必须进入事件将发生的组件中,对于您的案例,必须进入
和
。您想要控制的事件是@skegg99所说的传输
。因此,在你的支持bean中创建一个String
属性,以连接所选的播放器,例如pickListBean.selectedPlayerNames
。当传输发生在pickList
中时,将调用侦听器,在这里您必须将pickListBean.players.target
值分配给您的属性。之后,将使用选定的值更新面板。你不需要ui:repeat
。我听不懂你的问题。您有一个固有存储多个值的组件。您现在希望这些多个值显示在一个组件中,同时只能容纳一个值?