[:p:dataTable中的p:remoteCommand actionListener仅适用于最后一行

问题描述 投票:1回答:1

我正在尝试打印在inputText中输入的值,但是除了最后一行显示正确的值外,它仅显示0!这是最少的代码(我没有包括所有字段和获取器/设置器)

@ManagedBean(name="medicament")
@ViewScoped
public class MedicamentBean {
  private List<Medicament> medicaments;
  private String libelle;
  private int qte_vente;

  public void test() {
    System.out.println(this.qte_vente);
}
}

html:

<h:form>
<p:dataTable value ="#{medicament.medicaments}" var ="m">
   <p:column headerText="libelle">      
      <h:outputText value = "#{m.libelle}"/>
   </p:column>
<p:column headerText="qte">
    <h:inputText value ="#{medicament.qte_vente}" onkeyup="myCommand();"/>
    <p:remoteCommand name="myCommand" actionListener="#{medicament.test()}"  style="display: none;" 
 />
   </p:column>

</p:dataTable>
</h:form>
jsf primefaces datatable remotecommand
1个回答
3
投票

[在webbrowser中打开网页。右键单击并选择查看页面源代码。仔细查看在此处看到的生成的HTML输出。当您有10个表格行时,它应该看起来像这样

<table>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
    <tr><td><script>function myCommand() { /* ... */ }</script></td></tr>
</table>

猜猜您在JavaScript中执行myCommand()时会调用哪个人...

对,那根本行不通。

它只与您<p:remoteCommand>所对应的<p:dataTable>的一个pass a parameter outside一起使用,但是实际上您使事情变得过于复杂。只需使用<p:ajax>

<h:inputText ...>
    <p:ajax event="keyup" listener="#{medicament.test()}" />
</h:inputText>

就这些。

© www.soinside.com 2019 - 2024. All rights reserved.