Que faire lorsqu'une exception javax.el.PropertyNotWritableException se produit

Événement: j'étais en colère de ne pas pouvoir définir une valeur pour Bean lorsque j'ai exécuté le traitement de soumission à partir de l'écran

--Environnement --Windows10 version 64 bits 1909 - openjdk 11 2018-09-25 - Eclipse IDE for Enterprise Java Developers Version: 2020-09 (4.17.0) - JSF 2.3.9 - Payara Server 5.194

javax.el.PropertyNotWritableException: /admin/ponsuke/ponsuke.xhtml @52,92 value="#{item.mailAddress}": The class 'jp.co.my.app.Item' does not have a writable property 'mailAddress'.
    at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:99)
    at javax.faces.component.UIInput.updateModel(UIInput.java:859)
    at javax.faces.component.UIInput.processUpdates(UIInput.java:773)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:571)

Être un ...

<!--réduction-->
  <ui:repeat var="category" varStatus="index" value="#{ponsukeController.categories}">
    <ui:repeat var="item" varStatus="status" value="#{category.itemList}">
        <td class="form-inline">
          <h:inputText value="#{item.mailAddress}" />
<!--réduction-->

Pas de Setter?

PonsukeController


//réduction
/**Liste d'informations sur la catégorie. */
@Getter
@Setter
private List<Category> categories;
//réduction

Cause: La classe enfant n'a pas @ Setter

Ahhhh, @ Value n'incluait pas @ Setter ...

In practice, @Value is shorthand for: final @ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @Getter, except that explicitly including an implementation of any of the relevant methods simply means that part won't be generated and no warning will be emitted. @Value - projectlombok.org

Category


import lombok.Value;

@Value
public class Category {
    List<Item> itemList;
}

Item


import lombok.Value;

@Value
public class Item {
    int itemId;
    String mailAddress;
}

Action: modifiez l'annotation de la classe avec la propriété à définir

Cette fois, @ Value est attaché, et j'utilise le rôle de @ AllArgsConstructor ailleurs, donc [@Getter @AllArgsConstructor] + [@Setter] = [@Data @AllArgsConstructor] J'ai décidé de changer pour. Puisque la propriété de class Category est List et que seul le contenu est modifié, l'annotation n'est pas modifiée.

Item


import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Item {
//réduction

Au fait Si vous ajoutez @ Setter à chacune des propriétés ʻitemList et mailAddress, une erreur de compilation se produira. PropertyNotWritableException se produisait même si «@ Setter» était ajouté à la classe en plus de «@ Value». Je pense que c'est probablement parce qu'il y a @FieldDefaults (makeFinal = true, level = AccessLevel.PRIVATE)`.

To add final to each (instance) field, use @FieldDefaults(makeFinal=true). Any non-final field which must remain nonfinal can be annotated with @NonFinal (also in the lombok.experimental package). @FieldDefaults - projectlombok.org

Recommended Posts

Que faire lorsqu'une exception javax.el.PropertyNotWritableException se produit
Que faire lorsqu'une exception javax.batch.operations.JobStartException se produit
Que faire si IllegalStateException se produit dans PlayFramework
Remarques sur la marche à suivre lorsqu'une exception WebView ClassNotFoundException se produit dans JavaFX 12
Erreur ExecJS :: RuntimeUnavailable: que faire quand cela se produit
Que faire lorsque la méthode non définie ʻuser_signed_in? '
Que faire en cas de problème pendant Content Assist
Que faire lorsque vous rencontrez le problème node_modules avec docker-compose
Que faire si une erreur d'analyseur SAX se produit lors de l'utilisation de Liferay 7 / DXP sur AWS
[Rails 6] Que faire lorsqu'une erreur de modèle manquante se produit après l'introduction du haml [Super facile]
Que faire lors du débogage "Source non trouvée"
Qu'utilisez-vous lors de la conversion en String?
Que faire si une erreur se produit lorsque nokogiri entre lors de l'installation du bundle
Que faire lorsque "call'Hoge.connection 'pour établir une connexion" apparaît sur les rails c
<f: ajax> Impossible d'attacher <f: ajax> à un non-ClientBehaviorHolder Que faire lorsque vous devenez parent
Que faire lorsque les balises JSF ne deviennent pas HTML
Que faire si vous créez accidentellement un modèle
Que faire si une erreur ActionController :: UnknownFormat se produit
Que faire quand est invalide car il ne commence pas par un "-"
ParseException: que faire lorsqu'une date impossible à analyser est atteinte
[Ubuntu] Que faire lorsque MongoDB ne peut pas être démarré en raison d'une erreur SocketException
Que faire si vous obtenez une erreur NoClassDefFoundError lorsque vous essayez d'exécuter eclipse sur Java 9
Que faire quand il devient impossible de trouver CDI BeanManager.
Que faire lorsque la méthode n'est pas trouvée dans f: ajax
Que faire lorsque vous ne pouvez pas appliquer d'opérateurs d'expression à la liaison de méthode
Que faire si mysql2 obtient une erreur d'installation de bundle
Que faire lorsque vous ne pouvez pas formater l'objet donné en tant que date dans JSF convertDateTime
[Ruby / Rails] Que faire lorsque NoMethodError apparaît lors de l'utilisation d'une méthode destructive comme le filtre!
[Tutoriel Rails Chapitre 2] Que faire lorsque vous faites une erreur dans le nom de la colonne
[Rails] Que faire lorsque la vue se réduit lorsqu'un message est affiché avec la méthode des erreurs
Que faire lorsque les modifications du servlet ne sont pas reflétées
[Rails] Que faire lorsque les rails ne répondent pas ou ne s'arrêtent pas
java.security.InvalidKeyException: Que faire en cas de taille de clé ou de paramètres par défaut illégaux
Que faire si vous obtenez une erreur de bibliothèque partagée JNI lorsque vous essayez de créer avec Eclipse
Que faire lorsque javax.el.ELException: Pas une expression de méthode valide: s'affiche lorsque l'écran JSF est affiché
Que faire après la mise à jour de Dockerfile, docker-compose.yml
Un rappel lorsqu'une erreur aapt.exe se produit
[IOS] Que faire lorsque l'image est remplie d'une seule couleur
Que faire si vous obtenez un avertissement groovy dans Thymeleaf Layout
Que faire lorsque CentOS ne peut pas être démarré avec VirtualBox sur Catalina
Que faire lorsque "npm ERR! Code ENOSELF" s'affiche après l'installation de npm
Que faire lorsque l'hôte bloqué: "nom d'hôte" apparaît dans Ruby on Rails
il ne reste plus d'espace sur l'appareil Que faire en cas d'erreur
Remarques sur ce qu'il faut faire lorsque EC2 est configuré avec t2.micro
Que faire si le processus Tomcat reste lorsque vous arrêtez Tomcat dans Eclipse
Que faire si vous recevez une alerte de vulnérabilité MiniMagick sur GitHub
Que faire si vous mourez avec zip si vous avez pom lors de la création d'un fichier exécutable avec gradle
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal