Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JSP] Hyperlink openen in page fragment

Pagina: 1
Acties:

  • Fresh T.
  • Registratie: Februari 2002
  • Laatst online: 13:01
Ik ben op dit moment bezig om een pagina op te zetten met gebruik van JSP. Aan de linkerkant heb ik dan bijvoorbeeld een navigatie fragment en rechts een content fragment. Is de hiermee mogelijk om een link uit de navigatie te openen in het content fragment op dezelfde pagina, eigenlijk hetzelfde idee als bij frames? Ik weet dat aan de hyperlinks gewoon een target meegegeven worden, alleen zie ik niet precies hoe ik die moet linken aan een fragment.

Of kan ik alleen, zoals in bepaalde tutorials wordt aangegeven, de fragments hergebruiken in andere pagina's, om zodoende de eenheid te simuleren? In het laatste geval wordt wel telkens de pagina opnieuw ingeladen.

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Dit lijkt me geen JSP vraag, maar een HTML (c.q. HTTP) vraag.

Want wat bedoel je precies met "fragment"?

De term "fragment" is namelijk een aanduiding voor een specifiek mechanisme binnen HTTP/HTML: met een fragment identifier in een HTTP URL kun je de browser instrueren naar een bepaald deel van de content van een pagina te springen dat aangeduid is met een <a> element met dezelfde ID (of naam) als het fragment dat je opgeeft.

Bijv. http://example.com/index.html#footer zou kunnen linken naar de footer van de index.html pagina (aangenomen dat die een <a> element met ID "footer" bevat).

Hiermee krijg je niet hetzelfde effect als bij frames, want de rest van de pagina wordt gewoon meegenomen, de browser springt alleen alvast naar een andere plek op de pagina.

Een "fragment" van de pagina zelf is ook niet op deze manier los van de rest van de pagina te wijzigen. Dat kan evt. wel met Dynamic HTML en JavaScript (tegenwoordig beter bekend als AJAX ;) ).

Maar ik zou er niet aan beginnen. Gewoon met een JSP include de navigatie in elke pagina opnemen en gewoon per link een nieuwe pagina openen. Zoekmachine- en bookmark-vriendelijk.

"Any sufficiently advanced technology is indistinguishable from magic."


  • Fresh T.
  • Registratie: Februari 2002
  • Laatst online: 13:01
Herko_ter_Horst schreef op zaterdag 08 maart 2008 @ 18:41:
Want wat bedoel je precies met "fragment"?
Met fragment bedoel ik een page fragment, een deel van de pagina die wordt ingevuld door een andere pagina (een .jpsf pagina vult deze in). Een voorbeeld van de werking is te vinden op Using Page Fragments - Netbeans.

Met dit idee zou ik dus graag het idee van frames willen overnemen, alleen kom ik er dus niet achter hoe ze naar elkaar gelinkt kunnen worden en of dit uberhaupt wel mogelijk is.

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Ok, dit noem ik in mijn verhaal hierboven een include. Wat je hiermee dus inderdaad kunt doen is vaste onderdelen van je pagina in aparte files definieren en die includen in de "echte" JSP. De homepage JSP (index.jsp) ziet er dan bijvoorbeeld als volgt uit:
code:
1
2
3
4
<%@ include file="/WEB-INF/includes/header.jspf" %>
<%@ include file="/WEB-INF/includes/navigation.jspf" %>
  <p>Welcome to our homepage</p>
<%@ include file="/WEB-INF/includes/footer.jspf" %>
en een andere JSP (products.jsp) ziet er zo uit:
code:
1
2
3
4
<%@ include file="/WEB-INF/includes/header.jspf" %>
<%@ include file="/WEB-INF/includes/navigation.jspf" %>
  <p>These are our products</p>
<%@ include file="/WEB-INF/includes/footer.jspf" %>
In je navigation.jspf link je dan gewoon naar index.jsp en products.jsp.

Is dit wat je bedoelt? Of snap ik je vraag niet?

"Any sufficiently advanced technology is indistinguishable from magic."


  • Fresh T.
  • Registratie: Februari 2002
  • Laatst online: 13:01
In het voorbeeld wat jij aanbrengt, zul je dus voor elke pagina dezelfde pagina's moeten includen, wil je de layout behouden. Dit betekent dat je gehele pagina opnieuw wordt ingeladen wanneer je een link aanklikt. Dit is ook wat ik op dit moment heb.

Ik ben echter op zoek naar een manier waarin je de hoofdpagina 3 (of welk aantal dan ook) page fragments geeft, waarbij alleen een bepaald deel zich zal refreshen. En dan aan de hand van een hyperlink in de navigation page fragment inladen in de content page fragment, zonder dat de overige fragments refreshed worden.

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Dat kan niet, zie ook mijn eerste reactie, m.n. de laatste twee paragrafen daarvan.

[ Voor 37% gewijzigd door Herko_ter_Horst op 09-03-2008 00:35 ]

"Any sufficiently advanced technology is indistinguishable from magic."


  • Fresh T.
  • Registratie: Februari 2002
  • Laatst online: 13:01
Dat is jammer. Dat betekent dat er iets meer werk nodig is om bepaalde content in andere page fragments continu te bewaren. Denk hierbij aan een tekstveld dat steeds ververst word en daarbij naar default status wordt gezet.

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Wat bedoel je met content in fragments bewaren? Het tekstveld voorbeeld helpt me even niet verder in snappen wat je bedoelt...

"Any sufficiently advanced technology is indistinguishable from magic."


  • Fresh T.
  • Registratie: Februari 2002
  • Laatst online: 13:01
Stel je bezit een pagina met 2 page fragments (fragments zoals gedefinieerd als in de URL die ik eerder gaf). Links bevat een tekstveld (maakt niet uit waar deze voor zou zijn, gaat om het voorbeeld) en een aantal hyperlinks. In het tekstveld voer je een waarde in. Rechts is de content page fragment, waarvan de inhoud wordt bepaald door pagina's gecontroleerd door de hyperlinks aan de linkerkant.

In het voorbeeld wat jij gaf en de manier waarop ik er nu gebruik van maak, wordt bij elke klik op een hyperlink de gehele pagina refreshed, dus inclusief tekstveld (krijgt default waarde). Iets idealer zou ik het vinden wanneer alleen het rechter fragment wordt bijgewerkt bij een actie, iets wat je kunt vergelijken bij het gebruik van een frameset. Het linker fragment blijf je dan "onafhankelijk" gebruiken.

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Ah, right. Nee, dat kan voor zover ik weet alleen met frames (of Dynamic HTML/JavaScript/AJAX zoals gezegd).

Je kunt natuurlijk wel de waarde van het tekstveld doorgeven aan de server zodat die het op de nieuwe pagina alvast kan invullen.

Dus nog even voor de duidelijkheid: JSP fragments zijn een manier om server-side delen van pagina's in losse bestanden op te nemen. Meer niet. Alle andere features die je in de interactie met de gebruiker voorstelt daar gaan die fragments (of JSP in het algemeen) je niet mee helpen, omdat de fragments "verdwenen" zijn op het moment dat de pagina in de browser wordt getoond. De browser weet niks van die fragments, of uberhaupt van het feit dat er JSP is gebruikt om de pagina te creeeren.

[ Voor 53% gewijzigd door Herko_ter_Horst op 09-03-2008 01:32 ]

"Any sufficiently advanced technology is indistinguishable from magic."

Pagina: 1