web-dev-qa-db-fra.com

JSF xmlns URI non enregistré dans IntelliJ IDEA

Voici le début de mon fichier JSF:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://Java.Sun.com/jsf/html"
      xmlns:ace="http://www.icefaces.org/icefaces/components"
      xmlns:c="http://Java.Sun.com/jsp/jstl/core"
      xmlns:f="http://Java.Sun.com/jsf/core">
<h:head>
</h:head>
<h:body>

Cependant, http://www.icefaces.org/icefaces/components et http://Java.Sun.com/jsp/jstl/core sont surlignés en rouge avec l'erreur URI is not registered. Cela provoque l'apparition de nombreuses autres balises ultérieures en rouge avec les erreurs element 'x' is not allowed here. Voici une image montrant ce que je veux dire:

xmlns and tags appear in red

Tentatives de solutions:

Lors de la recherche d'une solution, il est apparu que d'autres avec le même problème l'ont résolu en faisant "Fetch External Resource". Cependant, cela n'a pas fonctionné pour moi. Pour les icefaces xmlns xmlns:ace="http://www.icefaces.org/icefaces/components", le message d'erreur suivant apparaît: Error while fetching http://www.icefaces.org/icefaces/components. Et pour le jstl xmlns xmlns:c="http://Java.Sun.com/jsp/jstl/core" je reçois l’erreur: No XML at the location: http://Java.Sun.com/jsp/jstl/core.

J'ai également constaté que certaines personnes avaient résolu le problème en supprimant le fichier de métadonnées IntelliJ IDEA workspace.xml dans le répertoire .idea. Cela semble fonctionner temporairement ... mais ensuite, il semble que le problème revienne au bout d'un moment. Je dois également reconfigurer plusieurs paramètres de projet que je voudrais éviter.

Toute aide serait appréciée. Je ne suis pas vraiment familiarisé avec les choses xmlns et je suis toujours un débutant en développement d’applications Web. Je vous remercie!

Mettre à jour:

Conformément à la réponse de Mark Vedder, j'ai ajouté manuellement des ressources externes à mon projet et le problème n'a pas encore refait surface.

11

Avec des ressources non enregistrées, la première solution consiste à utiliser le correctif "Fetch External Resource". Si cela échoue, comme cela a été le cas pour vous (généralement parce que "l'emplacement" est uniquement dans le nom), vous devez le configurer manuellement.

Pour configurer manuellement

  1. Si la ressource (c'est-à-dire .xsd, .dtd, etc.) existe dans l'un des fichiers JAR de votre bibliothèque, passez à l'étape 2. Sinon, téléchargez une copie de la ressource. Placez-le à un endroit pratique sur votre système.
  2. Dans IDEA, avec le curseur sur l'erreur, ouvrez le menu Correction rapide/Intentions en tapant Alt+Enter et sélectionnez "Configurer manuellement les ressources externes". (Si vous ne disposez pas de cette option (basée sur IntelliJ IDEA version), reportez-vous à la section suivante pour obtenir des instructions.)
  3. Si la ressource est dans un fichier JAR, sélectionnez l'onglet Schemaset sélectionnez la ressource dans le fichier jar approprié. Si vous l'avez téléchargé, sélectionnez l'onglet Explorer(pouvant s'appeler Finder sur Mac), puis sélectionnez et sélectionnez le fichier que vous avez téléchargé.
  4. Cliquez sur OK et laissez IDEA indexer la ressource.

Pour modifier ou définir via IDE Paramètres

  1. Ouvrez les paramètres Dialogue via Ctrl+Alt+Enter ou Fichier> Paramètres.
    • Pour configurer pour tous les nouveaux projets futurs afin que ce schéma soit disponible, ouvrez la boîte de dialogue similaire via Fichier> Autres paramètres> Paramètres par défaut .
  2. Dans la section Project Settings, recherchez le noeud Schemas and DTDs.
  3. Configurez le schéma souhaité. Il y a des icônes ajouter, éditer et supprimer en haut à droite. Comme ci-dessus, vous pouvez sélectionner un fichier dans une bibliothèque via l'onglet Schemasou votre système de fichiers via l'onglet Explorername__.

UPDATE

Les différentes définitions JSF Taglib (pour JSF 2.x et versions ultérieures) sont disponibles dans le répertoire com/Sun/faces/metadata/taglib du fichier jar com.Sun.faces:jsf-impl. Le fichier JAR jsf-impl peut être téléchargé à partir de maven central , entre autres.

23
Javaru

J'ai essayé tout ce qui est suggéré ici pour que intellij reconnaisse la version correcte de mon fichier jsf. À la fin, j'ai découvert que je n'avais pas de référence directe dans mon projet Web dépendances maven à jsf-api. En d'autres termes, ajouter 

<dependency>
  <groupId>com.Sun.faces</groupId>
  <artifactId>jsf-api</artifactId>
  <version>2.1.29-08</version>
  <scope>provided</scope>
</dependency>

à mon pom, le fixe. Le problème, c’est que intellij était capable de résoudre un sous-ensemble des symboles jsf, ce qui laisse penser que le pot était vu par celui-ci, bien qu’il s’agisse d’une mauvaise version du pot.

1
Mustafa

Cette erreur se produit lorsque vous n'attachez pas la bibliothèque de JSF Mojarro. Téléchargez et ajoutez cette bibliothèque dans le projet. 

File> Project Structure> Library 

ajoutez JSF la bibliothèque. 

1
Hafiz Shehbaz Ali

Si vous utilisez "IntelliJ Idea", veuillez ouvrir la boîte de dialogue "Structure du projet" en cliquant sur Ctrl+Alt+Shift+S, recherchez le JSF not found dans la notification d'erreur d'artefact (quelque chose dans ce genre), cliquez sur l'option Corriger et modifiez la portée de JSF en provided. Cela a résolu mon problème.

1
Bineeth

J'avais le même problème avec les ressources de icefaces.
Une solution à ce problème consiste à donner au projet (encore une fois, si vous ne l’avez pas déjà fait) le support du framework IceFaces (clic droit sur le nom du projet).
Dans mon cas, j’utilisais la version 3.3.0, puis j’ai défini le téléchargement dans le formulaire Add Framework Support.
Intellij téléchargé 3.1.0 et le IDE reconnaît la ressource immédiatement après. Plus tard, j'ai défini à nouveau la version 3.3.0.
Je pense donc que cela suffit pour télécharger à nouveau le framework, et les ressources seront téléchargées dans le dossier META-INF.

Cordialement.-

1
demian

vous pouvez aussi ajouter "urn:import:<url>"

exemple: xmlns:d="urn:import:com.mypackage.mylovelycode"

0
kholofelo Maloma