2016-07-22 29 views
1

In meinem JSF 2.1-Projekt habe ich eine benutzerdefinierte Facelet-Tag-Datei, die einen actionListener unter Verwendung der in Passing backing bean action to Facelet tag file bereitgestellten Lösung definiert.Bedingte Übergabe der Bean-Aktion an Facelet-Tag-Datei

Das Problem ist, ich möchte die Option nicht mit dem actionListener bei der Verwendung des Tags haben, und diese Lösung macht die Aktion Attribut erforderlich. Ich würde lieber nicht nur zwei Versionen des Tags (mit und ohne actionListener) erstellen, weil der Code relativ groß ist, und das würde einige Wartungsprobleme verursachen.

Was muss ich tun, um den actionListener in der Tag-Implementierung ohne Java-Kodierung (wenn das überhaupt möglich ist) bedingt hinzuzufügen?

Antwort

0

Sie EL verwenden kippe bedingte Ausdrücke in action-Attribut, Sie für weitere Informationen auf this question

aussehen kann ich nicht wissen, wenn Sie (auf Wich Ereignis) wollen die Action Methode auszuführen, aber Sie können die Action für eine ändern a4j: Unterstützung Tag und versuchen, den folgenden Code

Sie können eine js-Funktion für die Bedingungslogik anrufen oder speichern nur den Zustand in einen Parameter (je nach Logikkomplexität)

<ui:param name="parameter" value="#{bean.parameterValue}/> 
<h:inputText> 
     <a4j:support event="onchange" onsubmit="if(checkCondition(parameter))){return true;}" actionListener="#{bean.yourMethod()}"/> 
</h:inputText> 

function checkCondition(parameter){ 
    //your logic 
} 

Hoffnung es hel ps