有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在实体中填充java空下拉列表

即使我在onLoad中填充实体,我也得到了空的下拉列表
有人能帮忙吗

集团实体为:

@Entity
@Table(name="GROUPS")
public class Group implements Serializable,Lifecycle{

    /**
     * 
     */
    private static final long serialVersionUID = 5551707547269388327L;
    @Id
    @Column(name="ID")
    @GeneratedValue
    private int id;
    @Column(name="E_NAME")
    private String eName;
    @Column(name="A_NAME")
    private String aName;

   /*getters and setters*/


    @Override
    public boolean onDelete(Session arg0) throws CallbackException {
        // TODO Auto-generated method stub
        return false;
    }
    @Override
    public void onLoad(Session session, Serializable arg1) {
        // TODO Auto-generated method stub
        Group adminGroup =new Group();
        Group sectionAdminGroup =new Group();
        Group userGroup =new Group();



        adminGroup.seteName("Admin");
        sectionAdminGroup.seteName("Section Admin");
        userGroup.seteName("User");

        adminGroup.setaName("مسشرف عام");
        sectionAdminGroup.setaName("مشرف قطاع");
        userGroup.setaName("مستخدم");

        session.save(adminGroup);
        session.save(sectionAdminGroup);
        session.save(userGroup);
    }
    @Override
    public boolean onSave(Session arg0) throws CallbackException {
        // TODO Auto-generated method stub
        return false;
    }
    @Override
    public boolean onUpdate(Session arg0) throws CallbackException {
        // TODO Auto-generated method stub
        return false;
    }

}

在用户实体中

@Entity
@Table(name="USERS")
public class User implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = -5446873648771603353L;
    @Id
    @Column(name="ID")
    @GeneratedValue
    private int id;
    @Column(name="USERNAME")
    private String username;
    @Column(name="PASSWORD")
    private String password;
    @Column(name="DATE_CREATED")
    private String dateCreated;
    @Column(name="LAST_LOGIN_DATE")
    private String lastLoginDate;
    @Column(name="ACTIVE")
    private int active;
    @Column(name="MSISDN")
    private String msisdn;
    @Column(name="MSGS_CREDIT")
    private int msgsCredit;
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name="Group_id",referencedColumnName="ID")
    private Group group;
   /*getters and setters*/

弹簧控制器

@SuppressWarnings("unchecked")
        @RequestMapping(method=RequestMethod.GET)
          public String listUsers(Map<String, Object> map) {

            map.put("user", new User());
            map.put("usersList", usersService.getAllObjects(User.class));
            map.put("groupsList", usersService.getAllObjects(Group.class));
            return "index";
        }

在JSP中

 <tr>
                  <td>groups</td>
                  <td><form:select path="group">
                  <form:options items="${groupsList}"/> 
                  </form:select></td>
                  </tr>
                <tr>

注意:我将usersService.getAllObjects(Group.class)作为arraylist并打印了它的大小,但是我得到了0,因此实体在初始化后不会加载数据
如何加载它


共 (1) 个答案

  1. # 1 楼答案

    Hibernate的OnLoad函数似乎存在缺陷
    所以你必须在你的控制器中获取这样的值

    @SuppressWarnings("unchecked")
            @RequestMapping(method=RequestMethod.GET)
              public String listUsers(Map<String, Object> map) {
                List <Group> groupsList=(ArrayList<Group>)usersService.getAllObjects(Group.class);
                map.put("user", new User());
                map.put("usersList", usersService.getAllObjects(User.class));
                map.put("groupsList", usersService.getAllObjects(Group.class));
    
                if (groupsList.size()!=0){
                    for (Group group:groupsList){
                        }
                }else{
                    fillData(fillGroups());
                    map.put("groupsList", usersService.getAllObjects(Group.class));     
                }
                return "index";
            }
    

    填充数据的方法将是

    private ArrayList fillGroups(){
    
             List <Group> groupsList=new ArrayList();
    
            Group adminGroup =new Group();
            Group sectionAdminGroup =new Group();
            Group userGroup =new Group();
    
            adminGroup.setId(1);
            sectionAdminGroup.setId(2);
            userGroup.setId(3);
    
    
            adminGroup.seteName("Admin");
            sectionAdminGroup.seteName("Section Admin");
            userGroup.seteName("User");
    
            adminGroup.setaName("مشرف عام");
            sectionAdminGroup.setaName("مشرف قطاع");
            userGroup.setaName("مستخدم");
    
    
            groupsList.add(adminGroup);
            groupsList.add(sectionAdminGroup);
            groupsList.add(userGroup);
    
    
            System.out.println("he call fillGroup....");
            return (ArrayList) groupsList;
    
        }
    
         @ModelAttribute("Group")
         private  void fillData(ArrayList<Group> list){
    
             for (Group group:list){
               usersService.addObject(group);
             }
         }
    

    在Jsp中

                      <td>groups</td>
                      <td><form:select path="group.id">
                      <form:options items="${groupsList}" itemLabel="eName" itemValue="id" /> 
                      </form:select></td>
                      </tr>