我试图打印在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>
答案 0 :(得分: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()
时会调用哪一个...
对,那是行不通的。
如果您pass a parameter所在的<p:remoteCommand>
中只有一个<p:dataTable>
,但实际上您的工作过于复杂。只需使用<p:ajax>
。
<h:inputText ...>
<p:ajax event="keyup" listener="#{medicament.test()}" />
</h:inputText>
仅此而已。