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
。我听不懂你的问题。您有一个固有存储多个值的组件。您现在希望这些多个值显示在一个组件中,同时只能容纳一个值?