JSP Parameter in die Bohne übergeben

kingele

Mitglied
Guten Morgen!
Ich habe ein kleines Problem mit meiner JSP Anwendung. Ich bin gerade dabei etwas reinzukommen, lese parallel viel und gucke mir andere Projekte an, um einfach ein paar Grundlagen nachzuprogrammieren und zu lernen.

Ich habe bis jetzt eine kleine Seite, die einfach 3 Produkte aus einem Array liest und sie mir anzeigt. Bei klick auf den Titel eines Produkts möchte ich gerne auf eine Detailseite geleitet werden.
Mein Problem besteht darin, dass der Paramter nicht korrekt übergeben wird:

Code:
<tr:forEach var="product" begin="0" end="#{OutPutBean.laenge}" items="#{OutPutBean.produkte}">
            <table>
                <tr>
                    <td><img src="${product.img}" height="150" width="130"/></td>
                    <td>
                        <h:form>
                            <h:commandLink value="#{product.name}" action="showDetails" actionListener="#{OutPutBean.ProductLink_action}">
                                <f:attribute name="text" value="test" />
                            </h:commandLink>
                        </h:form>
                        
                        <br />
                        <h:outputLabel value="#{product.preis}"/>
                    </td>
                </tr>
            </table>
        <hr style="color:#666666;border:dashed;">
        </tr:forEach>

Java:
    public void ProductLink_action(ActionEvent ae) {
       text = (String) ae.getComponent().getAttributes().get("text"); 
        System.out.println("@" + text);
    }

Das funktioniert wunderbar. Link ist korrekt dargestellt, ich werde weitergeleitet und "test" wird ausgegeben. Wenn ich jetzt allerdings value="test" gegen value="#{product.name}" austausche, bekomme ich einen null-Wert zurück (idealerweise möchte ich gerne nur product übergeben, aber ich taste mich langsam ran :D).

ich steh grad echt etwas auf der Leitung, weil das Produktname im Link ja korrekt angezeigt wird, oder darf ich das forEach-Element etwa nicht übergeben? Wenn ja, wie komme ich an das Objekt ?

Kann mir hier jemand aus der Patsche helfen?


Vielen lieben Dank!!
 
Zuletzt bearbeitet:

ToM912

Mitglied
Hi,

vorab erstmal ohne dich deskriminieren zu wollen... wieso jsp ? jsp sind seit 2009 deprecated ;)

Ich denke wir bräuchten auch noch Informationen welche JSF Version du benutzt? 1.x ?

Ab 1.2 wurde der <f:setPropertyActionListener> eingebaut...

den könntest du wie folgt nutzen:

Java:
<h:commandLink value="#{product.name}" action="showDetails" >
                                <f:setPropertyActionListener value="#{product.name}" target="#{OutPutBean.text}" />
                            </h:commandLink>

somit wird in deiner "bohne" das text attribut gesetzt ;)

Ein anderes Problem könnte sein, dein Scope deiner ManagedBean? Welcher ist das?

Gruß,
Thomas
 

kingele

Mitglied
Hi Thomas,
danke für deine Antwort.

Wow. ich wusste nicht, dass JSP so veraltet ist. Vielleicht benutze ich dann doch JSF und ich bin nur mit den ganzen Abkürzungen durcheinander gekommen :) ich hab das vor 2,5 Jahren in der Uni gelernt und wenn das da auch schon tot gewesen wäre, hätten wir das hoffentlich nicht vorgesetzt bekommen :)


Mh, ich kann dir leider garnicht genau sagen, welche Version ich nutze. das ist alles integriert in meiner IDE (JDev 12c). Auch der Oracleseite finde ich grad nicht viel zu den einzelnen Komponenten.

Ich habe gerade mal deine Version versucht und bekomme leider immernoch ein null-Wert zurück. Der Scope meiner Bohne ist request.


Code:
<h:commandLink value="#{product.name}" action="showDetails" actionListener="#{OutPutBean.ProductLink_action}" style="font-style:bold;">
                                 <f:setPropertyActionListener value="abc" target="#{OutPutBean.selection}" />
                            </h:commandLink>

Java:
    public String getSelection() {
        System.out.println("#" + selection);
        return selection;
    }

selbst hier bekomme ich ein Null-Wert!


Vielen Dank!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
R Servlet Alle Parameter ausgeben Web Tier 14
M JSF JSF: Methode bei versteckt aufrufen & Parameter übergeben Web Tier 6
R JSF View Parameter auslesen Web Tier 2
R Parameter in HttpServletRequestWrapper übertragen Web Tier 2
J Übergabe von Parameter aus JSP an Java Web Tier 2
H Servlet Servlet nimmt HTTP-GET mit Parameter entgegen Web Tier 2
D Parameter übergeben und auslesen Web Tier 7
M STRUTS2 - Array als Parameter übergeben Web Tier 2
A JSF xhtml parameter / zugriff auf value Web Tier 2
P rich:panelMenuGroup --> expanded Parameter Problem Web Tier 3
K jquery.get() mehrere Parameter Web Tier 2
P Mit EL Parameter an Methode übergeben Web Tier 5
J JSF CommandLink Parameter Web Tier 2
K Link in JSP setzen mit Parameter/Attribut Web Tier 4
M JSP Parameter übergeben Web Tier 9
M JSF: CommandButton übergibt den Parameter nicht Web Tier 3
S servlet bedienen mit get und post parameter Web Tier 10
O Kann man POST Parameter Link-abhängig setzen? Web Tier 4
El Gringo Parameter in CommandLink übergeben Web Tier 4
T parameter in der url Web Tier 3
R Request Parameter kopieren und setzen Web Tier 3
S JSF, Parameter aus Facescontext auslesen Web Tier 1
G jsp parameter anhängen Web Tier 2
S Bild hochladen mit JSP - Parameter übergeben Web Tier 4
leifg Parameter für Tags aus String lesen (JSP 1.2) Web Tier 2
K JSF Textfarbe in der Bohne bestimmen Web Tier 6
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
M JSP Objekt in eine JavaBean übergeben Web Tier 7
Gossi JSP Map an JSP übergeben? Web Tier 3
T Button im Servlet - Werte übergeben Web Tier 2
J werte per post an servlet übergeben und auswerten Web Tier 3
F JSP übergeben von id + namen Web Tier 21
T Array übergeben an JS oder anders ? Web Tier 2
7 Struts iterator index JS-Funktion übergeben?? Web Tier 2
P Ist es möglich einen Returnwert einem httpRequest zu übergeben Web Tier 3
D ResultSet aus Bean an JSP übergeben Web Tier 11

Ähnliche Java Themen

Neue Themen


Oben