Option 1: Convertir client ID
Ici, je suppose que champ ID de la classe client est appelé id
et qu'il est de type Long
. Cela vous permet d'accéder à ce champ ID via un convertisseur qui produit une présentation de chaîne non formatée. Notez que cela ne gère pas bien la valeur null
.
binder.forField(fkCustomerId)
.withConverter(Long::valueOf, String::valueOf)
.bind("customerId.id");
Option 2: Convertir objet client
Cet exemple prendrait objet client et le convertir au format souhaité pour le champ ID client. Cela vous permet de gérer les valeurs null
et de procéder à un formatage plus avancé en fonction de l'état de l'objet entier.
binder.forField(fkCustomerId)
.withConverter(new CustomerToCustomerIdConverter())
.bind(Mail::getCustomerId, Mail::setCustomerId);
Vous pouvez omettre convertToModel
résultat dans le convertisseur parce que vous ne devriez pas être en train de créer des objets clients à partir des valeurs d'identité que les types d'utilisateurs.
public class CustomerToCustomerIdConverter implements Converter<String, Customer> {
@Override
public Result<Customer> convertToModel(String s, ValueContext valueContext) {
return Result.error("not supported");
}
@Override
public String convertToPresentation(Customer customer, ValueContext valueContext) {
return Objects.toString(customer.getCustomerId(), "");
}
}
style TextField
Pour le style TextField de configuration, vous devez configurer en mode lecture seule. Et si vous ne voulez pas obtenir la bordure du champ de texte, vous devez ajouter un style supplémentaire.
TextField fkCustomerId = new TextField();
fkCustomerId.addStyleName(ValoTheme.TEXTFIELD_BORDERLESS);
fkCustomerId.setReadOnly(true);
Il serait bon d'ajouter plus d'informations sur ce que vous voulez faire. Vous ne voulez probablement pas autoriser l'utilisateur à modifier directement votre clé primaire. Il devrait probablement être basé sur autre chose que l'entrée de l'utilisateur. – Mika
Table Mail contient des paramètres de messagerie pour les clients pour une autre application et contient customer_id en tant que clé étrangère. EclipseLink l'a mappé en tant que client customerId mais je ne peux pas lier un objet de classe Customer, dois-je le convertir en quelque chose? – revolt
Que voulez-vous faire avec l'objet client? Voulez-vous afficher la valeur customer_id dans une étiquette, afficher une liste déroulante pour créer une nouvelle connexion ou autre chose? – Mika