2016-10-12 5 views
0

Ich habe eine Datentabelle wie folgt aus:Primefaces command onClick Javascript Aufruf

<p:dataTable id="tablealltx" var="transaction" widgetVar="tablealltx" 
         value="#{pastTxModel.txList}" > 
<p:column filterBy="#{transaction.session}" 
          filterMatchMode="contains"> 

    <f:facet name="filter"> 
    <p:inputText id="myFilter" value="#{transactionXmlController.currentFilter}"          onchange="PF('alltxform').filter()" /> 
    </f:facet> 

    <p:outputLabel value="#{transaction.session}" ondblclick="document.getElementById('alltxform:tablealltx:myFilter').value = this.innerText;PF('tablealltx').filter()" /> 

</p:column> 
</p:dataTable> 

ich diese Arbeit Doppelklick Funktion ändern möchten:

<p:outputLabel value="#{transaction.session}" ondblclick="document.getElementById('alltxform:tablealltx:myFilter').value = this.innerText;PF('tablealltx').filter()" /> 

Um ein Command mit einem einzigen Mausklick. Ich habe versucht, die folgenden, aber der Wert

<p:commandButton value="Filter" onclick="document.getElementById('alltxform:tablealltx:myFilter').value = #{transaction.session};PF('tablealltx').filter()" /> 

Der Wert von transaction.session ist nicht auf den Filter geschrieben, wie es sein sollte. Was habe ich falsch gemacht?

+2

Versuchen Sie ersetzen '# {transaction.session}' 'mit '# {transaction.session}'' –

+0

Vielleicht haben Sie auch wollen 'Prozess hinzufügen = "@ none"' zu Ihr 'commandButton'. Siehe http://StackOverflow.com/questions/25339056/understanding-primefaces-process-update-and-jsf-fajax-execute-render-attributes –

+0

und Sie möchten vielleicht den 'type =" button "' zum commandButton hinzufügen Wenn Sie nicht möchten, eine Server-Side-Action ... – Kukeltje

Antwort

2

Die onclick in Ihrer Schaltfläche enthält diese Aussage:

document.getElementById(...).value = #{transaction.session}; 

Dies wird in dem resultierenden HTML-Code als wiedergegeben werden:

document.getElementById(...).value = sessionValue; 

In Ihrer previous question es bemerkenswert war, dass der Sitzungswert ein String war Das muss nicht entfernt werden, also können Sie den Wert einfach in Anführungszeichen setzen. So einfach in ändern:

document.getElementById(...).value = '#{transaction.session}'; 
+0

Bonusfrage: Ich habe versucht, eine zweite Schaltfläche hinzuzufügen, die den Filterwert löscht. Das funktioniert gut, wenn die Schaltfläche in der p: -Spalte ist, aber wenn ich sie in die Filterfacette verschiebe, funktioniert die Filterung nicht mehr. Irgendwelche Ideen von der Spitze deines Kopfes? :) – Tim

+0

Nicht sicher, ob die "Filter" -Facette nur eine Komponente "erlaubt" (in der Dokumentation nicht zu finden). Du könntest versuchen, den Button eine 'header' Facette zu bewegen (habe das selbst nicht versucht). Das ist rätselhaft. Ich müsste mal reinschauen. –

+0

Ok danke! Ich werde versuchen, – Tim