2010-12-08 4 views
1

Depuis la mise à niveau de WAS6.1 vers WAS7.0, j'obtiens une erreur lorsque j'essaie d'afficher une valeur contenue dans un tableau.Websphere 7 & JSTL: Impossible d'obtenir la valeur des tableaux -> Ressource manquante dans l'implémentation EL: ??? propertyNotReadable?

Java:

private Date[] days = new Date[10]; 
public Date[] getDays() { 
    return days; 
} 

JSP:

<td><fmt:formatDate value="${fair.days[0]}" pattern="dd.MM.yyyy" /><td> 

Cela provoque l'erreur suivante:

[Exception in:/tilesContent/listFairs_bodyarea.jsp] Missing Resource in EL 
implementation: ???propertyNotReadable??? 

Mon application fonctionne très bien lorsqu'il est déployé sur un serveur WAS6.1. Le problème se produit uniquement sur WAS7.

J'ai ajouté une méthode getFirstDay() qui retourne days [0] et y accède en utilisant $ {fair.firstDay} et cela fonctionne. Y a-t-il un problème d'accès aux baies?

Répondre

3

Je pense avoir trouvé une explication partielle et une solution au problème.

J'ai ajouté une nouvelle propriété indexée à la classe Fair pour vérifier que les propriétés indexées
fonctionnent bien. Ils font.

J'ai ajouté un nouveau getter pour le tableau days et lui ai donné le nom getXyz(). Cela a bien fonctionné. J'ai remarqué que le getter et le setter d'origine étaient asymétriques (raisons hystériques). Je sais que c'est un peu bizarre mais cela a fonctionné jusqu'à maintenant. Quoi qu'il en soit, j'ai modifié les méthodes comme suit:

public Date[] getDays() {            
    return days;               
}                  
public void setDays(Date[] dates) {          
    this.days = dates;             
}                  
public void setDay(int day, Date date) {         
    this.days[day] = date;            
} 

Le problème ne se produit plus.

Je n'ai aucune explication pour expliquer pourquoi cela résout le problème car je pense que seul le getter est utilisé. Cette "solution" est correcte pour moi car le code a l'air mieux et ça marche.

(Ne hésitez pas à laisser un commentaire si vous savez POURQUOI cela résout le problème)

1

Il existe en fait un autre problème: le message d'exception réel ne peut pas être trouvé dans l'implémentation EL utilisée. Cela indique que vous avez une autre implémentation EL plus ancienne dans votre chemin de classe qui est en conflit avec celle fournie par le serveur d'applications.

Assurez-vous que vous n'avez aucun fichier JAR dans les /WEB-INF/lib de webapp qui sont spécifiques à un serveur. Nettoyer le dossier pour se débarrasser de tous les fichiers JAR spécifiques au serveur.

+0

juste eu un coup d'oeil sur le serveur./WEB-INF/lib est vide en dehors de struts.jar. Ce pot est placé là automatiquement et pas explicitement par moi. +1 'cos c'est un conseil utile. – paul

+0

Vérifiez les autres emplacements de chemin de classe, par ex. JRE/lib, JRE/lib/ext. Ceci est clairement un signe de la pollution de classpath des différentes classes/JAR versionnées. – BalusC

+0

Merci pour le commentaire. Que devrais-je rechercher exactement? Je suis assez sûr que nous faisons un déploiement propre - supprimer le serveur, créer le serveur, installer etc. – paul

Questions connexes