Temat: Primefaces menu (przekazywanie / odczyt wartości)

Witam, mam problem z menu primefaces (http://www.primefaces.org/showcase/ui/menu.jsf) a google nic nie podpowiada.

Chce wyswietlic na tej samej stronie wartosc ktora wybralem. Kiedy przesylam wartosc jako zwykle inputText value to dziala:


<p>Wybrany produkt to <strong>#{menu.categoryId}</strong>!</p>

<p:inputText value="#{menu.categoryId}" />
<p:commandButton value="Wyslij" actionListener="#{menu.categoryId}" ajax="false" />


W klasie Menu jest oczywiscie getter i setter.

Ale ja nie chce wpisywac ID dzialu do inputa i klikac na button Wyslij.

<p:menu>
<p:submenu label="Produkty">
<p:menuitem value="Produkt pierwszy" actionListener="#{menu.categoryId}" ajax="false"/>
<p:menuitem value="Produkt drugi" actionListener="#{menu.categoryId}" ajax="false"/>
</p:submenu>
</p:menu>


Jak to zrobic dla menu aby po klieknieciu pojawiala mi sie wybrana wartosc w
<p>Wybrany produkt to <strong>#{menu.categoryId}</strong>!</p>
W value jest przekazywana tekstowa tresc a jak jak przekazac wartosc np. ID produktu: 1, 2, 454, 1022?

Z gory dziekuje za pomoc.

konto usunięte

Temat: Primefaces menu (przekazywanie / odczyt wartości)

Wszystko fajnie, ale po co ten sam temat na dwóch forach?

Temat: Primefaces menu (przekazywanie / odczyt wartości)

Proba przekopania sie wsrod tematow z ofertami pracy... jesli mozesz pomoc to bede wdzieczny.
Kamil Mikołajczyk

Kamil Mikołajczyk programista Java /
Grails

Temat: Primefaces menu (przekazywanie / odczyt wartości)

Nie znam tej biblioteki i nie mam w tej chwili czasu się zagłębiać, ale po pierwsze dziwne wydaje mi się przypisywania pola id do property "actionListener", tam trzeba podać nazwę akcji, która wywoła się po kliknięciu na danym menuitem
po drugie, samo podmienienie wartości w innym miejscu na stronie robi się javascriptem już bez udziału serweraKamil Mikołajczyk edytował(a) ten post dnia 07.03.12 o godzinie 14:57

Temat: Primefaces menu (przekazywanie / odczyt wartości)

Wiem, dokladnie - trzeba podac akcje do action listenera. Akcja bedzie z gettera / settera - rzecz w tym, ze ja nie chce tworzyc tylu akcji ile mam elementow menu tylko jedna akcje np. kategoriaId i jakos podawac parametry 1,2,3 (czyli id dzialow).

Cos w stylu
actionListener="#{menu.categoryId(123)}"

Cos w stylu
actionListener="#{menu.categoryId(456)}"


A dalej w efekcie wyswietli mi sie:
<p>Wybrany produkt to <strong>#{menu.categoryId}</strong>!</p>

Wybrany produkt to <strong>123</strong>!
Wybrany produkt to <strong>456</strong>!

Nie wiem jak to zrobic...
Kamil Mikołajczyk

Kamil Mikołajczyk programista Java /
Grails

Temat: Primefaces menu (przekazywanie / odczyt wartości)

to chyba nie jest możliwe używając tej kontrolki, dokumentacja nie mówi nic o możliwości przekazania innej wartości niż przez property value, więc to raczej tak działa że każdy menuitem ma swój listener, który nie przyjmuje żadnej wartości

a może zamiast actionListenera da się wykorzystać property url (np. "nazwaAkcji?value=22") i włączyć ajax? to już taki strzał, bo jak mówię, nie znam w ogóle tej biblioteki, tyle że to nadal nie odświeży tej wartości w innym miejscu na stronieKamil Mikołajczyk edytował(a) ten post dnia 07.03.12 o godzinie 15:51

Temat: Primefaces menu (przekazywanie / odczyt wartości)

OK Panowie - to moze inaczej (prosciej) opisze swoj problem.

Mam index.html a w nim:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:head>
<title>title</title>
</h:head>

<h:body>
Hello world - paramert z geta to: #{Kontrola.wypluj()} Papa...<br />
</h:body>
</html>


Controller.java to:

package pl.visionexpress.katalog;

import java.io.IOException;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@ManagedBean(name="Kontrola")
@RequestScoped
public class Controller extends HttpServlet
{
//public HttpServletRequest request;
//public String mojeImie = request.getParameter("imie");
//to powyzej nie dziala

public String wypluj()
{
return mojeImie;
}
}


To co zakomentowalem nie dziala. Po prostu chce zreturnowac to co wypluje mi "imie" z get'a...
wchodzac z: http://localhost:8080/trunk/?imie=Mateusz

w PHP to by bylo $mojeImie = $_GET['imie'];
a w index (mniej wiecej) echo $mojeImie;

To takie banalne a wymiekam. Jesli tylko przejde ten etap zolglowania danymi miedzy widokiem a klasa to bede w domu.

konto usunięte

Temat: Primefaces menu (przekazywanie / odczyt wartości)

W PHP pobierasz $_GET to w javie też by się przydało. Nadpisz metodę
public void doGet(HttpServletRequest request, HttpServletResponse response)

i w niej pobierz parametr.

Temat: Primefaces menu (przekazywanie / odczyt wartości)

Hej Przemku, dziekuje za odpowiedz.
Nadpisanie doGet rowniez przerabialem ale przy braku dostatecznej wiedzy nie wiedzialem jak to wykorzystac. doGet nadpisane:

package pl.visionexpress.katalog;

import java.io.IOException;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@ManagedBean(name="Kontrola")
@RequestScoped
public class Controller extends HttpServlet
{
public String mojeImie;

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
mojeImie = request.getParameter("imie");
}

//w dalszej czesci doGet'a wynik jest wypluwany do writera... :/
}


Kazdy przyklad z nadpisanym doGet robi to samo: wypluwa do writera calego (nowego) html'a: http://www.wellho.net/resources/ex.php4?item=j601/demo...

Ja chce tylko moc przekazac zmienna mojeImie do widoku (wspomniany index.html - nie chce tworzyc nowego htmla i pisac go w klasie (burzy mi to koncepcje MVC). Kiedy w index.html robie:
#{Kontrola.doGet(request, response)} to po "Kontrola" IDE mi podpowiada 2 parametry (super) tylko co tu podac (o ile to dobry kierunek)... :/ Jakies pomysly?

konto usunięte

Temat: Primefaces menu (przekazywanie / odczyt wartości)

Tochę źle do tego podchodzisz, bean ma pobrać dane z get'a ale nie nie wypisywać ich na ekran. Za wypisanie jest odpowiedzialna instrukcja w pliku indeks (przy czym to nie powinien być raczej plik html, prędzej np. jspx). Taki przykład Twojego bean'a:

public class Controller extends HttpServlet
{
private String mojeImie;

public void setMojeImie(String imie) {
mojeImie = imie;
}

public String getMojeImie() {
return mojeImie;
}

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
setMojeImie(request.getParameter("imie"));
}
}

a w pliku generującym kod strony:
#{Controller.mojeImie}
Przemysław Obrocki edytował(a) ten post dnia 28.03.12 o godzinie 09:22



Wyślij zaproszenie do