beanshell scope problem...

ruutaiokwu

Top Contributor
hallo zusammen,

habe hier ->Scriptlets in facelets using BeanShell - Tal Liron - net.java.dev.facelets.users - MarkMail ein .jar gefunden, welches die beanshell als jsf-tag zur verfügung stellt. theoretisch sollte man dann wie eine art skriptlets (analog jsp) in jsf-seiten haben.

das ist meiner meinung nach vor allem vorteilhaft, wenn man die kombination jsf 2.0 & "facelets" verwendet, andernfalls (jsf + jsp) hat man ja bereits "normale" skriptlets...

nun habe ich das problem, dass offenbar der scope verloren geht:

[XML]<bsh:interpret eval='
/* ----------------------------------------- START SCRIPTLET HERE ----------------------------------------- */

int test = 0;

/* ----------------------------------------- END SCRIPTLET HERE ------------------------------------------- */
' />


<HTMLTag1>blablabla</HTMLTag1>
<HTMLTag2>blablabla</HTMLTag2>
<HTMLTag3>blablabla</HTMLTag3>
<HTMLTag4>blablabla</HTMLTag4>

<bsh:interpret eval='
/* ----------------------------------------- START SCRIPTLET HERE ----------------------------------------- */

System.out.println(test);

/* ----------------------------------------- END SCRIPTLET HERE ------------------------------------------- */
' />
[/XML]


...sowas scheint leider nicht zu gehen! wenn man die beispiele bei der beanshell-doku ansieht, ist es als nicht-jsf / norm. java-anwendung folgendermassen:

Java:
Object result = i.eval( "long time = 42; new Date( time )" ); // Date
Object result = i.eval("2*2");  // Integer

glaube auch dort kann man vom inhalt der .eval-funktion von zeile 2 keinen bezug mehr auf den inhalt von zeile 1 nahmen, so wie es aussieht...

oder hat jemand fundiertere kenntnisse über die beanshell als ich, und kann mich eines bessern belehren?


grüsse,
jan
 
hallo zusammen,

meine frage bezieht sich eigentlich nicht auf jsf's, sondern auf die beanshell. kennst sich niemand genauer damit aus?

wie verhält es sich mit meinem problem im nicht-jsf-kontext?


grüsse, jan
 
hallo maki,

irgendwie werde ich aus der beanshell-anleitung nicht ganz schlau... irgendwie sieht es mir aber ganz danach aus, dass sich diese beanshell in meinem kontext (facelet) anders verhält. da ich den scope nicht mehr habe, schreibe und lese ich in aktuelle session. bsp.:

Java:
<bsh:interpret 
					eval='

import xyz;
import .....
import .....

final FacesContext ctx = FacesContext.getCurrentInstance(); 
					final ExternalContext extCtx = ctx.getExternalContext(); 
					final HttpServletRequest request = (HttpServletRequest) extCtx.getRequest(); 
					final HttpServletResponse response = (HttpServletResponse) extCtx.getResponse(); 
					final Map requestMap = extCtx.getRequestMap(); 
					final String contentJSP = requestMap.get("contentJSP");	 
					
				
					HttpSession session = request.getSession();	
					Integer test = new Integer(1); 
					session.setAttribute("test", test);	
					Integer testNew = (Integer) session.getAttribute("test"); 
'
			/>


na ja, suboptimal könnte man sagen...

allerdings finde ich das beanshell jsf-tag HOCHINTERESSANT, damit kann ich in einem xhtml-facelet "quasi" java verwenden. (ähnlich wie skriptlet bei jsp...)

das projekt stammt überigens von tal liron: Scriptlets in facelets using BeanShell - Tal Liron - net.java.dev.facelets.users - MarkMail, From the Brain of Tal Liron | Contents

habe ihm geschreiben, doch leider keine antwort erhalten. offenbar ist das projekt tot...

den quelltext konnte ich trotzdem finden, und habe ihn an apache myfaces angepasst. werde den code hier im forum posten, und hoffe auf konstruktive feedbacks...

gruss, jan
 
Mein Kommentar war auf das falsch Unterforum bezogen.

Warum man etwas wie die Beanshell in Facelets verwenden will ist mir schleierhaft, das Scriptlets schon mies waren ist ja wohl unumstritten, also wozu diese degeneration?

offenbar ist das projekt tot...
R.I.P.
 
Keine Geschmackssache im eigentlichen Sinne, sondern leider durch persönliche Erfahrung bestätigter Konsens.

Für das was du willst gibt es schon eine Lösung: PHP (ohne Framework)
 

Zurück
Oben