Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Netbeans errors "The attribute target is not defined in the component outputStylesheet"

I have entered the following code:

<h:outputStylesheet library="css" name="style.css" target="body" />

The problem is that it is giving me an error on target="body" saying:

The attribute target is not defined in the component outputStylesheet

In the html part if the html I have the following:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:pe="http://primefaces.org/ui/extensions">

How can I solve this issue?

Thanks

like image 314
keith Spiteri Avatar asked Nov 27 '13 10:11

keith Spiteri


1 Answers

Look in the tag documentation of <h:outputStylesheet>. It indeed doesn't list target attribute. Perhaps you're confusing with the one from <h:outputScript>.

The <h:outputStylesheet> is by default always relocated to HTML <head>, for the very simple reason because it's illegal to have a <style> or <link> element inside the HTML <body>. The <h:outputScript> however is by default located at exactly the same location as where it's been declared. The <script> element as generated by it may be placed anywhere in the HTML <head> or <body>. You can let JSF auto-relocate this by setting the target attribute to head (will then appear in <head>) or body (will then appear in end of <body>).

Just remove it. If target="body" would theoretically have worked, it would only end up in illegal HTML output anyway.

<h:outputStylesheet library="css" name="style.css" />

Unrelated to the concrete problem, a resource library name of "css" is semantically wrong. Put it in the resource name.

<h:outputStylesheet name="css/style.css" />

See also:

  • What is the JSF resource library for and how should it be used?
like image 175
BalusC Avatar answered Oct 06 '22 01:10

BalusC