Spring mvc 3 Jqgrid:如何从对象列表中将数据加载到选择类型

时间:2013-04-18 12:23:11

标签: json hibernate spring-mvc jqgrid

我有2个类,User.java和Bank.java。 每个用户都有一个银行的引用。当我添加新用户时,我必须从银行列表中选择一个银行。 所以我的问题是如何将对象列表(从DB)加载到jqGrid中的select表单,并且知道所选数据将作为Integer(引用Bank表的外键)在DB中注册,你告诉我这是怎么回事。

@Entity
public class Utilisateur {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long idUser;
.
    .
@Autowired
@ManyToOne
private Agence agence;

@ManyToOne
private Banque banque;

这是我的控制器

@RequestMapping(value = "/getall", method = RequestMethod.GET)
public @ResponseBody
CustomUserResponse getAll() {

    System.out.println("affichage");

    List<Utilisateur> users = utilisateurDao.getAllUsers();

List<Banque> banks=utilisateurDao.getAllBanks();


    CustomUserResponse response = new CustomUserResponse();
    response.setRows(users);

    response.setRecords(String.valueOf(users.size()));

    response.setPage("1");

    response.setTotal("10");

    return response;
}


    @RequestMapping(value = "/add", method = RequestMethod.POST)
public @ResponseBody
CustomGenericResponse add(

@RequestParam("nom") String nom, @RequestParam("prenom") String prenom,
        @RequestParam("nomAcces") String nomAcces,
        @RequestParam("typeAcces") TypeAcces typeAcces,
        @RequestParam("motPasse") String motPasse,
        @RequestParam("banque") Banque banque

) {

    logger.debug("Received request to add a new user");

    // Construct our new user object. Take note the id is not required.
    // Assign the values from the parameters
    Utilisateur user = new Utilisateur();

    user.setNom(nom);
    user.setPrenom(prenom);
    user.setNomAcces(nomAcces);
    user.setTypeAcces(typeAcces);
    user.setMotPasse(motPasse);
    user.setBanque(banque);
    // Do custom validation here or in your service

    // Call service to add
    Boolean success = utilisateurDao.save(user);

感谢。

2 个答案:

答案 0 :(得分:0)

如果您查看

上的文档

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter

它们描述了如何生成将在编辑表单中使用的选择事件。

例如:(作为银行列colModel内部设置的一部分

formatter:'select', editoptions:{value:"1:One;2:Two"} 

银行的ID和名称将是您传递的值。您也可以让网格查询您的控制器以构建此列表。

答案 1 :(得分:0)

我找到解决方案并且它有效, 要生成选择表单,我必须插入一个有效的HTML(

@RequestMapping(value = "/listBanks")
public @ResponseBody
String listBanques(String idbanq) {

    String select = null;
    String selectfinal = null;
    List<Banque> banks = utilisateurDao.getAllBanks();

    for (Banque b : banks) {

        select = select + "<option value=" + b.getIdBanque() + ">"
                + b.getNom() + "</option>"
    }
    selectfinal = "<select>" + select + "</select>";

    return selectfinal;

}

并在ColModel中:

${name:'idBanque',index:'banque',width:100, editable: true,edittype:"select",editoptions:{dataUrl:"/ConsultationArchive/med/crud/listBanks"}},

感谢您的帮助,:))