2017-11-26 2 views
0

Ich bin ein Anfänger in JSF und ich möchte eine HTML-Seite in einer p:dialog öffnen.
Wenn ich die <ui: include> die Seite wie folgt angezeigt:Include Seite mit spezifischen Anker

<p:dialog header="Dialog" 
      widgetVar="dlg" 
      resizable="false" 
      dynamic="true" 
      fitViewport="true"> 

    <ui:include src="/resources/md.html" /> 

</p:dialog> 

es ohne Probleme funktioniert, aber was ich will, ist zu tun, um die Seite in einem bestimmten Anker zu öffnen. Ich habe das versucht:

<p:dialog header="Dialog" 
      widgetVar="dlg" 
      resizable="false" 
      dynamic="true" 
      fitViewport="true">  

    <ui:include src="/resources/md.html#anchor" /> 

</p:dialog> 

und es funktioniert nicht.

Kann jemand bitte helfen.

Antwort

0

Diese andere Lösung ist iframe tag verwenden, es funktioniert perfekt:

<p:commandLink value="iframe" onclick="PF('dlg').show()" /> 


<p:dialog header="Dialog" widgetVar="dlg">   
<iframe height="500" width="800" src="/md.xhtml#anchor"></iframe> 
</p:dialog> 

Keine js Notwendigkeit.

+2

Das hat viele Nachteile, da dies eine komplett neue Seite ist, keine Interaktion etc .. Sollte nur als letzter Ausweg genutzt werden! – Kukeltje

+0

Ich habe dies verwendet, um eine Lies mich-Datei anzuzeigen, also denke ich, dass ein iframe-Tag die Arbeit erledigt –

3

Ihr Versuch schlägt fehl, weil Ihre md.html statisch in 'Eltern' Jsf-Seite enthalten ist. Daher kann nur die übergeordnete jsf-Seite verwendet werden, um 'go to anchor' Funktionalität zu erreichen.

Um zu erreichen, was Sie wollen mit einer enthaltenen Seite innerhalb p:dialog, würde ich einfache Java-Skript verwenden.

JS

Fügen Sie diese Funktion, um Ihre Mutter JSF Seite JS (Seite wo Dialog definiert ist)

function gotoAnchor(anchorID) { 
    document.getElementById(anchorID).scrollIntoView(); 
} 

XHTML

hinzufügen onShow Attribut auf p:dialog wie diese

<p:dialog ... onShow="gotoAnchor('anchorID')" ...> 
    <ui:include src="/resources/md.html" /> 
</p:dialog> 

wo AnchorID ist id von Ihrem Ankerelement innerhalb md.html (in Ihrem Beispiel ist der Wert "Anker").

Auf diese Weise, wenn Ihr p:dialog angezeigt wird, wird die Funktion gotoAnchor ausgeführt, die Seite zum Blättern auf dem erforderlichen Element erzwingt.

+0

Ich versuchte Ihre Lösung, leider funktioniert es nicht –

+2

Ich versuchte Lösung mit einfachen 'md.html' Seite und einfache jsf Seite ... und ihre Arbeit OK. Wenn du also mehr Hilfe bekommen willst, dann posten Sie [mcve], damit jemand Ihren Fall reproduzieren kann. –

+0

Ich habe das iframe-Tag verwendet, um die Seite einzuschließen, und es funktioniert gut. Danke für deine Hilfe –