我使用Netbeans 6.8并尝试使用metawidget和JPA获取用户界面。我不能说
@Action
public void save( ActionEvent event )
{
mSearchMetawidget.save();
}
当我添加以下导入时,此注释会出现“不兼容的类型”错误。
import org.metawidget.inspector.impl.actionstyle.Action;
怎么办?如何添加与我的用户实体相关的操作。我想做“注册”行动。 提前致谢
对Richard的反应
我认为@Action是一个Metawidget注释,由于导入错误而头疼。我现在得到它。我还需要添加swing库。 @Action注释属于SwingAppFramework。
实际上,我们希望从Metawidget自动提取的用户界面更新我们的数据库记录。我们已经创建了实体类,并且正在尝试修改它们以达到目的。我们如何对我们的用户界面类说,当按下按钮时,使用界面字段中输入的数据,记录会更新?
感谢。
对理查德的回复2
我想使用JPA的EntityManager。是否应该在按钮的动作侦听器中添加与EntityManager相关的代码?对于以下类,其侦听器是addUser()
我有一个实体类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???
}
}
谢谢。
答案 0 :(得分:0)
我相信你正在写错字。 org.metawidget.inspector.impl.actionstyle.Action是一个接口,而不是一个注释。我相信你的意思是:
@UiAction
当然,除非您打算使用SwingAppFramework @Action注释,否则您需要确保导入不会发生冲突。你应该使用:
@org.jdesktop.application.Action
希望有所帮助。
理查德。