2010-03-21 4 views
0

J'utilise Netbeans 6.8 et j'essaie d'obtenir une interface utilisateur en utilisant Metawidget et JPA. Je ne peux pas direComment ajouter une action liée à un objet métier dans Metawidget?

@Action 
public void save(ActionEvent event) 
{ 
    mSearchMetawidget.save(); 
} 

Cette annotation donne une erreur "types incompatibles" lorsque j'ajoute l'importation suivante.

import org.metawidget.inspector.impl.actionstyle.Action; 

Que faire? Comment puis-je ajouter une action liée à mon entité utilisateur? Je veux faire "enregistrer" l'action. Merci à l'avance

Réponse à Richard

Je pensais que @Action était une annotation Metawidget et a un mal de tête en raison d'importer errors.I obtenir now.i aussi besoin d'ajouter des bibliothèques swing. L'annotation @Action appartient à SwingAppFramework. En fait, nous voulons mettre à jour nos enregistrements de base de données à partir d'interfaces utilisateur qui sont extraites automatiquement par Metawidget. Nous avons créé des classes d'entités et essayons de les modifier pour atteindre cet objectif. Comment pouvons-nous dire à nos classes d'interface utilisateur que lorsqu'un bouton est enfoncé, en utilisant les données entrées dans les champs d'interface, les enregistrements sont mis à jour?

Merci.

Réponse 2 à Richard

Je veux utiliser EntityManager de JPA. Le code associé à EntityManager doit-il être ajouté dans l'action Listener? Pour la classe suivante, son auditeur est addUser()

J'ai une classe d'entité, User.java

package datamodeldemo; 

import java.io.Serializable; 
import javax.persistence.Column; 
import javax.persistence.DiscriminatorColumn; 
import javax.persistence.DiscriminatorType; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Inheritance; 
import javax.persistence.InheritanceType; 
import javax.persistence.Table; 
import org.metawidget.inspector.annotation.*; 
import org.metawidget.inspector.annotation.UiAction; 

import org.metawidget.inspector.commons.jexl.UiJexlAttribute; 

@Entity 
@Table(name="ShineeUser") 
@Inheritance(strategy=InheritanceType.JOINED) 
@DiscriminatorColumn(name="USER_TYPE", 
       discriminatorType= DiscriminatorType.STRING, length=20) 

public class User implements Serializable 
{ 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="USER_ID", nullable = false) 
    private Integer user_id; 

    @Column(name="USER_NAME", nullable = false) 
    private String user_name; 

    @Column(name="PASSWORD", nullable = false) 
    private String password; 

    @Column(name="USER_TYPE") 
    private UserType userType; 

    @Column(name = "EMAIL") 
    private String e_mail; 

    @Column(name = "TELEPHONE") 
    private String telephone; 

    public enum UserType {customer, hotelAdmin, agencyAdmin}; 

    @UiHidden 
    public Integer getId() { 
     return user_id; 
    } 

    public void setId(Integer id) { 
     this.user_id = id; 
    } 

    @UiComesAfter("user_name") 
    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    @UiComesAfter("user_id") 
    public String getUser_name() { 
     return user_name; 
    } 

    public void setUser_name(String user_name) { 
     this.user_name = user_name; 
    } 

    @UiComesAfter("password") 
    public UserType getUserType() { 
     return userType; 
    } 

    public void setUserType(UserType userType) { 
     this.userType = userType; 
    } 
    @UiComesAfter("userType") 
    public String getE_mail() { 
     return e_mail; 
    } 

    public void setE_mail(String e_mail) { 
     this.e_mail = e_mail; 
    } 
    @UiComesAfter("e_mail") 
    public String getTelephone() { 
     return telephone; 
    } 

    public void setTelephone(String telephone) { 
     this.telephone = telephone; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (user_id != null ? user_id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof User)) { 
      return false; 
     } 
     User other = (User) object; 
     if ((this.user_id == null && other.user_id != null) || 
      (this.user_id != null && !this.user_id.equals(other.user_id))) { 
       return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() 
    { 
     return "datamodeldemo.User[id=" + user_id + "]"; 
    } 

    @UiAction 
    @UiJexlAttribute(name = "HIDDEN", expression = "this.user != null") 
    public void addUser() 
    { 
     //Database update??? 
    } 
} 

Merci.

+0

@Gulcan Si vous avez d'autres détails que vous souhaitez partager avec d'autres utilisateurs, il est préférable de le faire sous forme de commentaires sur leurs réponses ou en ajoutant ces détails à votre question initiale. J'ai supprimé vos posts ci-dessous, mais je les ai fusionnés dans votre question d'origine. – Sampson

Répondre

0

Je crois que vous faites une faute de frappe. org.metawidget.inspector.impl.actionstyle.Action est une interface, pas une annotation. Je crois que vous vouliez dire:

@UiAction 

À moins, bien sûr, que vous vouliez utiliser l'annotation SwingAppFramework @Action, dans ce cas, vous devez vous assurer que vos importations ne sont pas heurtaient. Vous devez utiliser:

@org.jdesktop.application.Action 

Espérons que cela vous aide.

Richard.

+0

Salut, merci pour votre réponse.Je pensais @Action était une annotation Metawidget et a eu un mal de tête en raison d'erreurs d'importation.Je comprends maintenant.Je dois aussi ajouter des bibliothèques swing.J'essayais en fait votre application CarDemo.J'ai adapté mon code selon lui, cependant je reçois une exception de pointeur nul en raison des écouteurs d'action et "org.metawidget.widgetprocessor.iface.WidgetProcessorException: java.lang.reflect.InvocationTargetException" .Je ne comprends pas pourquoi.J'ajoute un écouteur d'action mais il vient plus tard dans l'exécution, vient d'abord la méthode fireActionEvent qui essaie d'exécuter des écouteurs d'action NULL.Toute indication? S'il vous plaît. – Gulcan

+0

@Richard Stack Overflow n'est pas conçu pour être publié plusieurs fois dans une question.Les utilisateurs sont encouragés à poster une réponse et à la modifier si nécessaire. Veuillez supprimer vos autres posts ici, ou les fusionner dans ce post accepté. Je vous remercie. – Sampson

Questions connexes