可以通过`f:param`传递`p:inputText`参数吗?

时间:2012-12-20 15:07:13

标签: jsf jsf-2 primefaces

在我看来,p:inputText不支持通过f:param发送参数。这是真的?

如果是,我怎么能传递参数?

更多细节
我有一个通过以下方式生成的inputText字段列表:

<p:dataTable value="#{EncryptionBean.epList}" var="item">
  <p:column>
  ...
     <p:inputText value="#{item.APID}" valueChangeListener="#{EncryptionBean.listenerApid}">
         <f:param value="#{item.presetName}" name="whoLaunched"/>
     <p:inputText>
  </p:column>    
<(p:dataTable>

当我捕获值更改侦听器时,我需要知道EncryptionBean.epList属于哪个inputText。我通常这样做:

ExternalContext ec; 
...
String value = (String)ec.getRequestParameterMap().get("whoLaunched");

...但它不适用于inputText(因为它适用于commandLink)。

基本上,如何将item.presetName与itemText值(item.APID)一起传递给侦听器?我需要在地图中保存这两个。

1 个答案:

答案 0 :(得分:1)

这有效:

HTML:

<p:inputText value="#{item.APID}">
    <p:ajax listener="#{EncryptionBean.listenerApid( item.presetName, item.APID )}"/>              
</p:inputText>

javabean:

public void listenerApid( String presetName, String typedAPID )
{       
    // Do something with values.
}

传递这些值的难易程度令人难以置信,只需使用ajax listener而不是valueChangeListener