Импортируйте javascript и css в тег head в пользовательский компонент jsf - PullRequest
0 голосов
/ 28 января 2011

Как импортировать javascript и css файл в заголовочный тег html, созданного пользовательским компонентом jsf?Я нашел несколько статей об использовании ресурсов для этой цели.

Как в (источник: http://technology.amis.nl/blog/6047/creating-a-custom-jsf-12-component-with-facets-resource-handling-events-and-listeners-valueexpression-and-methodexpression-attributes):

protected void writeScriptResource(
        FacesContext context,
        String       resourcePath) throws IOException
      {
        Set scriptResources = _getScriptResourcesAlreadyWritten(context);

        // Set.add() returns true only if item was added to the set
        // and returns false if item was already present in the set
        if (scriptResources.add(resourcePath))
        {
          ViewHandler handler = context.getApplication().getViewHandler();
          String resourceURL = handler.getResourceURL(context, SCRIPT_PATH +resourcePath);
          ResponseWriter out = context.getResponseWriter();
          out.startElement("script", null);
          out.writeAttribute("type", "text/javascript", null);
          out.writeAttribute("src", resourceURL, null);
          out.endElement("script");
        }
      }

      private Set _getScriptResourcesAlreadyWritten(
        FacesContext context)
      {
        ExternalContext external = context.getExternalContext();
        Map requestScope = external.getRequestMap();
        Set written = (Set)requestScope.get(_SCRIPT_RESOURCES_KEY);

        if (written == null)
        {
          written = new HashSet();
          requestScope.put(_SCRIPT_RESOURCES_KEY, written);
        }

        return written;
      }

      static private final String _SCRIPT_RESOURCES_KEY =
                             ShufflerRenderer.class.getName() + ".SCRIPTS_WRITTEN";

Однако, кроме записи в теге head, ссылка на импорт также записывается вмой компонентный код. Метод writeScriptResource () вызывается в начале метода encodeBegin. Кто-нибудь знает, как это сделать, чтобы избежать встроенных скриптов и стилей на моей странице?

Заранее спасибо, Пауло С..

1 Ответ

0 голосов
/ 30 января 2011

Я не знаю, можно ли использовать JSF 2, но с составными компонентами проще включать ресурсы, используя h: outputStylesheet и h: outputScript.Когда страница отображается, ресурсы будут в заголовке HTML.

...