JSF JSF: Methode bei versteckt aufrufen & Parameter übergeben

MadBlue

Aktives Mitglied
Hallo zusammen,

ich arbeite gerade an meinem 1. größeren JSF & PrimeFaces Projekt. (Bisher habe ich viel mit GWT und einigen älteren JSP basierten Frameworks gearbeitet, die ebenfalls primär BackEnd-Generated-FrontEnd-Code verwenden)

Dabei sind mir nun zwei Herausforderungen begegnet für die ich noch keine Lösung finden konnte.

1. Ich möchte bei einigen JSF-Seitenaufrufen, dass diese eine Methode in einer Bean aufrufen. Gibt es dafür ggf. ein eigenes 'hidden' Tag, welches ich da einbauen kann? (Oder 'pfusch' ich das einfach durch einen value Aufruf irgendwo bei den ich eigentlich nicht brauche...?) ( also alá <h:hidden value="#{meineBean.meineMethode}" >

2. Gibt es eine Möglichkeit Parameter direkt aus der JSF Datei an eine Methode in einer Bean zu übergeben?

Schon einmal vielen Dank für eure Hilfe,

Sören
 

redJava99

Bekanntes Mitglied
zu (1):
Du kannst in jeder Bean eine init()-Methode definieren, die bei Initialisierung der Bean (d.h. beim ersten Request aus einer JSF-Seite und bei jeder folgenden Initialisierung (abhängig vom Scope) ausgeführt wird.
Die Methode muss die Signatur public void init() haben und mit @PostConstruct annotiert werden. Dann wird sie nach Abschluss der Dependency Injection ausgeführt.
Die init() Methode ist die gängige Variante. Manchmal kann auch <p:remoteCommand> hilfreich sein, z.B. für asynchrone Requests.

zu (2):
Eine konkretere Beschreibung des Anwendungsfalls wäre hilfreich. Wills du die Parameter einmalig übergeben? Dauerhaft aktuell halten? Eventgesteuert übergeben (Button, ...)?
 

MadBlue

Aktives Mitglied
Hi,

erst einmal danke für deine Antwort.
Das mit dem init() und ProstConstruct als Alternative zum Constructor kannte ich...
Allerdings existiert die Bean in der Regel schon und wird von mehreren JSF Seite verwendet...
Das remoteCommand sieht aber sehr danach aus, als wäre es dass, was ich suche!


Zu 2:
Einfacher UseCase wäre zB.: Ich habe eine Tabelle mit Daten. Die Inhalte der Zeilen sind verlinkt. Beim Aufrufen des Links wird eine Detailansicht geladen. Ich möchte nun (je nachdem welche Zeile gewählt wurde) einen Parameter an eine Methode übergeben.
 

redJava99

Bekanntes Mitglied
zu 1:
Eine möglichst saubere Trennung der Beans ist im Allgemeinen empfehlenswert ;-)
Beim RemoteCommand nicht vergessen, es in ein <h:form> einzubetten, alles weitere müsstest du im PF Showcase/Doku finden.

zu 2:
Etwas in dieser Richtung sollte funktionieren:
HTML:
<h:form>
  <p:dataTable value="#{bean.persons}" var="person" ...>
    <p:column><p:commandLink actionListener="#{bean.sayHello(person)}" value="Click me" /></p:column>
  </p:dataTable>
</h:form>

//class Bean:
Java:
public List<Person> getPersons(){ ... }

public void sayHello(Person person){
   System.out.println("Hi, it's me, " + person.getFirstName());
}
 
Zuletzt bearbeitet:

MadBlue

Aktives Mitglied
Ah super! Vielen Dank! Das 2. ist GENAU das wonach ich gesucht habe, quasi schon fertig ausformuliert.

Der RemoteCommand funktioniert noch nicht so wie ich möchte, aber vielleicht hab ich es auch ungünstig erklärt.
So habe ich es zZ. implementiert:
HTML:
<h:form>
	<p:remoteCommand action="#{subsupplierHandler.loadBySupplier}" />
</h:form>
Die Methode wird jedoch nicht aufgerufen.
Sinn soll sein, jedesmal die Methode aufzurufen, wenn die Seite geladen wird. (zB. um die Bean wieder in Ihren ursprungszustand zu bringen...)

Sören
 
Zuletzt bearbeitet:

redJava99

Bekanntes Mitglied
Code:
<p:remoteCommand autoRun="true" action=... />
:)

Der Vollständigkeit halber: Um Beans beim Seitenaufruf in den Ursprungszustand zu bringen, gibt es @ViewScoped. Ohne den Kontext näher zu kennen, klingt die remoteCommand-Lösung ein bisschen gepfuscht ;-)
 
Zuletzt bearbeitet:

MadBlue

Aktives Mitglied
Ja das kann schon sein, dass es etwas mehr 'hotfix' ist. Ich bin schon recht weit mit dem Projekt und bin nun mit ein paar Dingen konfrontiert an die ich vorher nicht gedacht habe. (Eben weil MVC und JSF anders funktionieren als GWT etc.) Das sind halt die lessons learned fürs nächste mal. ;)

Mit dem autoRun wurde die Methode aufgerufen, dankeschön! :)

ViewScoped hat das Problem, dass es wieder für alle meine views gilt.

EDIT:
Habs jetzt mit in die Navigation eingebaut. Auch nicht optimal aber wohl sauberer. Trotzdem vielen Dank. :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Button klick soll Java methode aufrufen Web Tier 2
R get-methode der Managed-Bean wird immer 3 mal ausgeführt Web Tier 4
Joew0815 Spring Handle All Requests Methode Web Tier 1
M rendered ruft eine Methode auf, andere aber nicht Web Tier 15
V Mittels JavaScript Methode aufrufen Web Tier 23
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
K JSF Unified-EL- Methode mit Parameterübergabe Web Tier 9
F NullPointerException auf validator methode Teil2? Web Tier 2
B JSF NullPointerException auf validator methode Web Tier 7
P Mit EL Parameter an Methode übergeben Web Tier 5
I Im PhaseListener Service Methode aufrufen Web Tier 21
J JSF Datatable bestimmte Methode Web Tier 4
I Automatische Weiterleitung JSF mit Aufruf einer Methode Web Tier 2
M JSF: Bei Seitenaufruf eine Methode starten Web Tier 15
H JSF - Methode kann nicht aufgerufen werden Web Tier 5
M Body onUnload Java Methode aufrufen Web Tier 13
K bean methode von jslt aufrufen Web Tier 7
D <html:select> bzw. <html:option> - Methode auslösen ? Web Tier 2
D [JSF] Lifecycle Methode wird mehrfach aufgerufen Web Tier 4
F Problem mit der Methode request.getRemotePort() Web Tier 2
D Methode bei Server Startup ausführen Web Tier 2
E Methode einer Bean aus anderer Bean aufrufen Web Tier 10
S JSF: Methode mit Parametern aufrufen Web Tier 7
J Fehler Tomcat/JSP findet Methode nich Web Tier 3
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
G in validate methode auf form objekte zugreifen Web Tier 3
A Action-Methode soll Ausgabe auf der Responsepage steuern Web Tier 4
F Beim Aufruf von einer JSF Seite eine Methode ausführen Web Tier 9
N RequestDispatcher: include-Aufruf einer jsp scheitert nach mehreren forward-Aufrufen Web Tier 1
S Servlet automatisch aufrufen Web Tier 2
S EJB Funktion in JSP aufrufen? Web Tier 2
S log4j mit konfigurationsfile aus jsp aufrufen Web Tier 7
S Jsp: javascript und javamethode aufrufen Web Tier 17
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
I Eine Bean von einer anderen Bean aufrufen Web Tier 2
E Servlet mit einem Link aufrufen? Web Tier 13
T Servlet soll sich selbst aufrufen. Web Tier 7
A Tomcat: beim Start des Servers einmalige Aktion aufrufen (Problem gelöst) Web Tier 2
S JavaScript-Funktion aufrufen mit a4j-support?? Web Tier 3
D MultiActionController von Spring ohne action und / aufrufen Web Tier 3
G Javascriptfunction aus einem Sucess-path aufrufen Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben