struts2: vom value stack zum servlet

Status
Nicht offen für weitere Antworten.

JRookie

Aktives Mitglied
Hi zusammen,
ich komm hier nicht weiter:
ich hab eine kleine struts Anwendung: in der client Eingabemaske wird ein Funktionsname eingegeben, in der business logic Klasse werden die Funktionswerte berechnet und als 2 double arrays auf den value stack gelegt.
Meine Ergebnis jsp soll ein servlet rufen, dass ein Koordinatensystem und die Kurve als Grafik darstellt.
Ich kann mittlerweile 1) mit
<h4><s:property value="dx"/></h4><br>
<h4><s:property value="dy"/></h4><br>
die arrays in voller Schönheit als strings auf der Maske ausgeben (was ich nicht will)
und 2) meinem servlet ein paar Daten explizit übergeben, dann wird das Koordinatensystem mit der (Test)kurve ausgegeben. Ich rufe das servlet so auf
Java:
<%
		int i ;
		webzei z5  = new webzei();
		z5.los(request, response, i, dx, dy);
%>
Die Fehlermeldung, die ich bekomme heisst "Could not resolve dx, dy" Er kennt sie irgendwie nicht.
Wie kann ich diese Datenübergabe hinbekommen? Kann ich von dem servlet aus auf getdx() und getdy() zugreifen, oder kann ich die Parameter vom jsp ans servlet übergeben ???
Vielen Dank im voraus!
JRookie
 

JRookie

Aktives Mitglied
Entweder meine Frage ist so überflüssig und jeder kennt die Antwort und verrät sie nicht,
oder ich bin hier ganz alleine auf der Welt .....
Ich hab jetzt auch schon getter und setter für dx und dy in meine servlet Klasse gepackt und versuche vom servlet direkt auf den value stack zuzugreifen, dass gibt zwei leere arrays, d.h. mein servlet liefert nur das Koordinatenkreuz.
Schade, schade
JRookie
 
M

maki

Gast
Du instantiierst ein Servlet in einem JSP Skriptlet?

Kenne struts2 nicht, nur struts (1), aber so etwas wäre da auch schon daneben gewesen ;)

Möchtest du vielleicht nur ein img Tag nutzen, dessen URL auf das Servlet verweist?
 

JRookie

Aktives Mitglied
Ja,ja dass tu ich wohl.
In meinem struts-in-action Buch werden immer jsp Seiten als result pages angegeben. Ich dachte mich daran zu halten um evt. Schwierigkeiten aus dem Weg zu gehen.
Wenn ich ein img tag benutzen würde, hätte ich immer noch das Problem einer Parameterübergabe (das ist mein eigentliches Problem!!).
Ich kann mir die Daten im jsp vom value stack holen mit
<s:property value="dx"/>
aber dx scheint doch nur eine Referenz auf den value stack Bereich zu sein. Die ganzen array Werte erscheinen auf dem screen (= output des jsp) , können aber nicht einer Variablen zugeordnet werden, die ich ans servlet übergeben könnte.
Würde ich mein servlet umbauen, so dass es sich selbst die Daten vom value stack holt, hätte ich immer noch das Problem, dass ich nicht weiss wie ....
Wenn mein servlet die entsprechenden getter und setter bekommt (die eigentlich in der java Klasse liegen, die die Funktionswerte berechnen), gibt's einen leeren array, d.h. ich bekomme immerhin ein leeres Koordinatenkreuz als Ergebnis. Auch nicht schlecht. Aber nicht ganz das, was ich will.
Any ideas, anyone ???
Viele Grüße und Danke für die Antwort
JRookie
 

JRookie

Aktives Mitglied
jawohl, die kommen aus dem jsp. Das sieht so aus:
Java:
        		<h4><s:property value="funcname"/></h4><br>
        		 <h4><s:property value="dx"/></h4><br>
        		 <h4><s:property value="dy"/></h4><br>
Die Werte werden schön säuberlich auf der Maske als string ausgegeben.
Es ist also eigentlich alles da.
Ich glaube, du willst wissen wo die Daten entstehen:
Ich habe eine action, die zeigt auf die Klasse fuzeicomp
Java:
		<action name="compute" class="fuzeicomp">
		<result name="SUCCESS">/jsp/zeig.jsp</result>
    		</action>
In dieser Klasse werden Funktionswerte berechnet und mit getter und setter für dx und dy auf den value stack geschoben.
Java:
    		dx[0]  =  -40.0 ; 
    		for (i=0 ; ; i++, dx[i]= dx[i-1] + 0.1 )  {

    			dy[i]  = pow(dx[i],2.0) + 0.0*a* pow(dx[i],2.0) + b*dx[i] + 0.0  ;
    	    	System.out.println ("dx[" + i + "] = " + dx[i] + "   dy[" + i + "] = " + dy[i] );	
    			if (dx[i] >= 40.0)  break;
    		}
 
    	
    	setdx(dx);
    	setdy(dy);
    	
    	return "SUCCESS";
    }


        
    private String name;
    private String func;

     // -----------------------------------    
    public String getfunc() {
        return func;
    }

    public void setfunc(String func) {
        this.func = func;
    }
    // -----------------------------------
    
    private String funcname;
    // -----------------------------------
    public String getfuncname()
    {
    	return funcname;
    }
    
    public void setfuncname( String funcname ){
    	this.funcname = funcname;
    }
    // -----------------------------------
    
	private double [] dx = new double [srcBufSize];
	private double [] dy = new double [srcBufSize];    
 
	public double [] getdx()
    { return dx ; }
    
    public void setdx( double [] dx )
    {	this.dx = dx; }
    
    
	public double [] getdy()
    { return dy ; }
    
    public void setdy( double [] dy )
    {	this.dy = dy; }    
    // -----------------------------------

JRookie
 
Zuletzt bearbeitet:

Atze

Top Contributor
ich kenne mich mit den tags nicht ganz so aus, habe nur mit scriptlets gearbeitet, aber was du da machst ist nur einen wert ohne referenz ausgeben

müsste es nicht so aussehen?:

<c:set var="dx" scope="request"><s:property value="wert1" /></c:set>
<c:set var="dy" scope="request"><s:property value="wert2" /></c:set>

??
 

JRookie

Aktives Mitglied
Kann gut sein, dass du recht hast; ich werde es heute abend ausprobieren.
eine Frage noch: Bei mir steht oben im jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
damit ist das Prefix s erklärt.
Muß ich was deklarieren, um dein "c" prefix klarzumachen ??
Grüße
JRookie
 

JRookie

Aktives Mitglied
Tja, leider ist das Ergebnis dasselbe:
Java:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
....
....
                <c:set var="dx2" scope="request"><s:property value="dx" /></c:set> 
                <c:set var="dy2" scope="request"><s:property value="dy" /></c:set> 

<%
		int i=500 ;
		webzei z5  = new webzei();
  		z5.los(request, response,i,dx2,dy2);
%>
gibt im Betrieb:
Java:
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 55 in the jsp file: /jsp/zeig.jsp
dx2 cannot be resolved
52: <%
53: 		int i=500 ;
54: 		webzei z5  = new webzei();
55:   		z5.los(request, response,i,dx2,dy2);
56: %>      		
57: 
58: 	</body>
An error occurred at line: 55 in the jsp file: /jsp/zeig.jsp
dy2 cannot be resolved
52: <%
53: 		int i=500 ;
54: 		webzei z5  = new webzei();
55:   		z5.los(request, response,i,dx2,dy2);
56: %>      		
57: 
58: 	</body>
Ich habe noch jstl.jar und standard.jar ins WEB-INF/lib kopiert. Hab ich im net gefunden.
Muss ich dem jsp nicht irgendwie erklären, dass die empfangenden Variablen dx2 und dy2 double [] sein müssen ???

Gruß
JRookie
 

Atze

Top Contributor
versuch mal
<c:set var="dx2" value="wert" />

sonst fällt mir nix mehr ein! :) wie gesagt, hab mit der taglib noch nicht wirklich gearbeitet! :)
 

JRookie

Aktives Mitglied
Hallo alle,
hab's ! endlich .....
Im jsp muss es so aussehen:
Java:
       		<c:set var="fn" value="${funcname}" ></c:set>
       		<h4><s:property value="funcname"/></h4><br>
 
 
      	<c:set var="dx2">			               geht !!!  
   			<s:property value="dx" />
	</c:set>
        <c:set var="dy2">			                geht !!!  
   			<s:property value="dy" />
		</c:set>
Allerdings bekomme ich die neuen Variablen nicht in den scriptlet Teil der jsp, wo ich sie dann als Parameter an das servlet weiterreichen wollte.
Ich hab jetzt im servlet ein import auf die Klasse in der getter und setter liegen und greif im servlet auf die Daten zu.
Im servlet webzei.java:
Java:
import pack.fuzeicomp;
.........

      double xt[]		= fuzeicomp.getdx();
      double yt[]		= fuzeicomp.getdy();
Damit ist das Ding erledigt.
Danke an alle
JRookie
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Struts Struts2 / Freemarker / Maven2: Markieren von Deployment-Stufen in der View-Schicht Web Tier 4
M STRUTS2 - Array als Parameter übergeben Web Tier 2
D Tomcat/Struts2 Benutzer bestimmt Name der URL Web Tier 2
B (JSP)+(Struts2)+(Servlet) Konfiguration web.xml Web Tier 2
O JSP struts2 tag: Problem mit Dezimalzahlen Web Tier 2
P Struts Struts2 if tag Problem mit getText() Web Tier 3
O struts2: iterator status in name-Feld benutzen Web Tier 7
D Struts2 Combobox ohne Eingabefeld Web Tier 2
O struts2: Zeilenumbruch in textarea verwenden Web Tier 3
7 struts2-jquery-Plugin Einbindung Web Tier 11
7 Struts2 in webbasierter Anwendung Web Tier 39
O struts2 - Probleme mit parametrisierten URLs Web Tier 5
O Struts2 - vollständige Beschreibung der Tags gesucht Web Tier 6
P Struts2 - Mehrere Methoden/Actions in einer Klasse + Validation Web Tier 2
J struts2 result="input" Web Tier 2
O [Struts2] Vorbelegung von Feldern Web Tier 6
O Escapen oder nicht Escapen, das ist hier die Frage :) (Struts2) Web Tier 2
O Struts2: Probleme mit Links aus Packages raus Web Tier 9
S Struts2 zeilenumbruchporblem bei textareas Web Tier 4
K [Struts2] autom. Action-Erkennung Web Tier 2
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
A JSP key=value Paare aus der URL auslesen Web Tier 3
R com.sun.faces.context.SessionMap.put(key, value) Web Tier 2
R JSF selectOneListbox speichert Value nicht. Web Tier 1
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
S value auf null setzen Web Tier 3
D JSF Aufruf des Value Attributes trotz rendered = false Web Tier 2
J JSF Array als Input-Value Web Tier 8
A JSF xhtml parameter / zugriff auf value Web Tier 2
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
D SmartGWT :: RichTextEditor :: Value read Web Tier 3
M Zugriff aus eigenen Tags auf Struts Value Stack Web Tier 2
E value übergabe an bean! aber wie? Web Tier 3
G JSP/JSF Inputtext rerender wenn Value geändert wird Web Tier 2
H Managed Bean Aufruf auf Stack legen Web Tier 10

Ähnliche Java Themen

Neue Themen


Oben