Toon posts:

[jsp] JSP variablen gebruiken in onderliggende Java code

Pagina: 1
Acties:

Verwijderd

Topicstarter
-

[ Voor 99% gewijzigd door Verwijderd op 09-08-2013 12:10 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

't Is binnen de Java-code uiteraard een echte Java-variabele, je plakt nu een stukje tekst in een String.
Ik gok dat het meer zoiets is:
String demail = " Geachte [heer/mevrouw] " + DBklantenRow.achternaam + ", \n";

Verwijderd

Topicstarter
Blijft resulteren in het feit dat de java code blijkbaar niet de JSP-variables kan vinden...

code:
1
offertemail$jsp.java [186:1] cannot resolve symbol


Anders om (van java -> jsp) moet er normaliter al aardig wat bijgetypt worden, maar uiteindelijk lukt dat wel altijd. Iemand eerder zo-iets dergelijks uitgeprobeerd?

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 01-05 18:22

jAnO!

lalalavanillevla

Hoofdstuk zeventien in de volgende tutorial geeft uitsluitsel over de sql taglib in JSP.

[link]http://java.sun.com/webservices/docs/1.3/tutorial/doc/index.html[/link]

Ik lees daar meteen een voorbeeld:

The setDataSource tag is provided to allow you to set data source information for the database. You can provide a JNDI name or DriverManager parameters to set the data source information. All of the Duke's Bookstore pages that have more than one SQL tag use the following statement to set the data source:

<sql:setDataSource dataSource="jdbc/BookDB" />

The query tag is used to perform an SQL query that returns a result set. For parameterized SQL queries, you use a nested param tag inside the query tag.

In bookcatalog.jsp, the value of the Add request parameter determines which book information should be retrieved from the database. This parameter is saved as the attribute name bid and passed to the param tag. Notice that the query tag obtains its data source from the context attribute bookDS set in the context listener.

<c:set var="bid" value="${param.Add}"/>
<sql:query var="books" >
select * from PUBLIC.books where id = ?
<sql:param value="${bid}" />
</sql:query>

Je moet dus eerst de param in een variabele zetten, en dan kan je die gebruiken in je query.

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


Verwijderd

Topicstarter
Geloof dat het nog erg vroeg is (nieuwe tijd ;)... maar dit was geheel niet wat het probleem was.

Zal het even opnieuw formuleren:

Het uitlezen van een JSP variable (in dit geval toevallig een die gegenereerd wordt door een sql-query) in de onderliggende JAVA-code wil niet lukken.

Heel basaal:

code:
1
2
3
4
5
<c:set value='test' var='variable' />

<%
 System.out.println(" wat staat er in de variable " + variable );
%>


resulteerd in het niet vinden van 'variable'.

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 01-05 18:22

jAnO!

lalalavanillevla

${variabele}

En Ik lees dit in de expressions tabel (zie vorige link 16.2) :
${departments[deptName]} The value of the entry named deptName in the departments map

edit:

ik ben ook nog niet helemaal wakker geloof ik, kom met antwoorden op niet gestelde vragen ... ik slaap weer even verder


Maar ik zou zeggen lees hoofdstuk 16/17 even... komt vast wel langs wat je wilt doen..

[ Voor 126% gewijzigd door jAnO! op 29-03-2004 11:33 ]

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


Verwijderd

Topicstarter
jAnO! schreef op 29 maart 2004 @ 11:26:
${DBklantenRow.achternaam}
Dat is JSP in de java code schrijven... genereerd meteen foutmeldingen...
Zoek het meer in de weg van scopes zetten oid

Bovenstaande link verschaft overigens wel wat extra denkwerk:

Hoofdstuk 19:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
t.doStartTag();
out = pageContext.pushBody();
t.setBodyContent(out);
// perform any initialization needed after body content is set
t.doInitBody();
t.doAfterBody();
// while doAfterBody returns EVAL_BODY_AGAIN we 
// iterate body evaluation
...
t.doAfterBody();
t.doEndTag();
out = pageContext.popBody();
t.release();

[ Voor 47% gewijzigd door Verwijderd op 29-03-2004 11:35 ]


  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 01-05 18:22

jAnO!

lalalavanillevla

Helpt dit?
JavaBeans components are Java classes that can be easily reused and composed together into applications. Any Java class that follows certain design conventions is a JavaBeans component.

JavaServer Pages technology directly supports using JavaBeans components with standard JSP language elements. You can easily create and initialize beans and get and set the values of their properties.
Je wilt dus eigenlijk een variabele zetten?

Daar gebruik je setProperty voor.. Die roept dan automatisch de betreffende setmethode van de bijbehorende Bean aan:

<c:set var="bid" value="${param.bookId}"/>
<jsp:setProperty name="bookDB" property="bookId"
value="${bid}" />

edit:
break


hmm je bent duidelijk met scripting bezig, ook handig... ;) was zelf nog niet bij hoofdstuk 19...

[ Voor 14% gewijzigd door jAnO! op 29-03-2004 12:02 ]

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


Verwijderd

Uiteraard is het niet zo mooi, Java code in je JSPs, maar het kan als volgt:

<% pageContext.findAttribute("variable"); %> of
<% pageContext.findAttribute("variable", PageContext.PAGE_SCOPE); %>

dat PAGE_SCOPE weet ik niet helemaal zeker zonder de docs erbij te hebben.

pageContext is een PageContext dit ook beschikbaar is in custom tags...

alef

Verwijderd

Topicstarter
Zal het verlossende antwoord even geven voor deze en genenen die er later nogmaals tegenaanlopen:

iets gedeclareerd in JSP
<c:set var='DBklantenRow' value='test' />

is in het java blok uit te lezen dmv
<%
Object DBklantenRow = pageContext.getAttribute("DBklantenRow");
%>
Pagina: 1