Devo aggiungere risorse JS e CSS a livello di codice a <h:head>
della pagina JSF. Non è chiaro come ottenere ciò. Qualcuno potrebbe dare un suggerimento o un esempio di kickoff?Come aggiungere a livello di programmazione risorse JS e CSS a <h:head>?
risposta
che dipende da dove esattamente si desidera dichiarare la risorsa. Normalmente, l'unica ragione per dichiararli in modo programmatico è che si dispone di un numero personalizzato UIComponent
o Renderer
che genera codice HTML che a sua volta richiede tali risorse JS e/o CSS. Devono quindi essere dichiarati da @ResourceDependency
o @ResourceDependencies
.
@ResourceDependency(library="mylibrary", name="foo.css")
public class FooComponentWithCSS extends UIComponentBase {
// ...
}
@ResourceDependencies({
@ResourceDependency(library="mylibrary", name="bar.css"),
@ResourceDependency(library="mylibrary", name="bar.js")
})
public class BarComponentWithCSSandJS extends UIComponentBase {
// ...
}
Ma se si davvero necessità di dichiarare altrove, come ad esempio in un metodo supporto di fagioli che viene richiamato prima render risposta (altrimenti è semplicemente troppo tardi), allora si può fare di UIViewRoot#addComponentResource()
. La risorsa componente deve essere creata come UIOutput
con un tipo di renderizzatore di javax.faces.resource.Script
o javax.faces.resource.Stylesheet
, per rappresentare un valore completo <h:outputScript>
o <h:outputStylesheet>
rispettivamente. Gli attributi library
e name
possono essere semplicemente inseriti nella mappa degli attributi.
UIOutput css = new UIOutput();
css.setRendererType("javax.faces.resource.Stylesheet");
css.getAttributes().put("library", "mylibrary");
css.getAttributes().put("name", "bar.css");
UIOutput js = new UIOutput();
js.setRendererType("javax.faces.resource.Script");
js.getAttributes().put("library", "mylibrary");
js.getAttributes().put("name", "bar.js");
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().addComponentResource(context, css, "head");
context.getViewRoot().addComponentResource(context, js, "head");
È possibile aggiungere uno script e stile le risorse per una pagina come questa:
var head = document.getElementsByTagName("head")[0];
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "xxxx.js";
head.appendChild(s);
s = document.createElement("style");
s.type = "text/css"
s.src = "yyy.css";
head.appendChild(s);
o, in forma funzione:
function addScript(path) {
var head = document.getElementsByTagName("head")[0];
var s = document.createElement("script");
s.type = "text/javascript";
s.src = path;
head.appendChild(s);
}
function addCSSFile(path) {
var head = document.getElementsByTagName("head")[0];
var s = document.createElement("style");
s.type = "text/css";
s.src = path;
head.appendChild(s);
}
Sebbene questo sia valido quando utilizzato in JavaScript, questo non è d'aiuto in un contesto JSF. –
- 1. Aggiungere risorse a Jetty a livello di programmazione
- 2. Come aggiungere nodi in DevExpress TreeList a livello di programmazione?
- 3. Come aggiungere JS a livello di codice in Magento?
- 4. Come aggiungere un'immagine da visualizzare a livello di programmazione?
- 5. Come aggiungere le viste alle viste a livello di programmazione
- 6. Accesso al catalogo delle risorse a livello di programmazione
- 7. Come aggiungere la macro excel 2010 a livello di programmazione
- 8. Node.js, Express e css, js, risorse immagine
- 9. Come impostare windowDrawsSystemBarBackgrounds a livello di programmazione?
- 10. , verificare a livello di programmazione
- 11. Aggiungere testo all'immagine in Android a livello di programmazione
- 12. Come si aggiunge UIButton a UIToolBar a livello di programmazione?
- 13. Aggiungere UIScrollView in UIView a livello di programmazione
- 14. Aggiungere ruolo all'utente in Liferay a livello di programmazione
- 15. Come configurare ELMAH a livello di programmazione?
- 16. Come aprire selezionare a livello di programmazione
- 17. Come utilizzare AcroTextExtractor.exe a livello di programmazione?
- 18. Come attivare "Installato" a livello di programmazione?
- 19. Come aggiungere un terzo livello al menu a discesa CSS?
- 20. Come nascondere UITabBarController a livello di programmazione?
- 21. come inviare sms a livello di programmazione?
- 22. Come disabilitare SparkUI a livello di programmazione?
- 23. Come programmare un'attività a livello di programmazione
- 24. Ionico come tornare a livello di programmazione
- 25. Disabilitare temporaneamente risorse js/css
- 26. Javascript - aggiungi seleziona a livello di programmazione
- 27. Modifica lingua app a livello di programmazione
- 28. Aggiunta di CSS e JS personalizzati a Shopify
- 29. Adattatore spinner e array Android a livello di programmazione
Qui trovi le informazioni su dove posizionare la dichiarazione: http://stackoverflow.com/questions/3586629 – Thor
Great! Questo mi ha salvato la giornata. –
Stavo anche lottando con dove aggiungere la dichiarazione. Ho finito per aggiungerlo nel costruttore del mio UIComponent. –