






Inutile de dire que le contrôleur ressemble à ceci. «Inscription», «Recherche», «Terminé» et «Résurrection» sont tous redirigés. Et à chaque fois, toutes les données sont extraites du tableau, transformées en liste et passées à l'écran.
   @RequestMapping(value = "/newItem", params="newItem",method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String newItem(@Validated TodoForm form, BindingResult result, Model model)
    {
    	DefaultTransactionDefinition dtDef = new DefaultTransactionDefinition();
    	TransactionStatus tSts = txMgr.getTransaction(dtDef);
		try
		{
			 jdbcTemplate.update("INSERT INTO todo (content,done) VALUES (?, ?)", form.getContent(),false);
			 txMgr.commit(tSts);
		}
		catch(Exception ex)
		{
			txMgr.rollback(tSts);
			logger.debug("mise à jour a échoué",ex.toString());
		}
        return "redirect:/";
    }
    @RequestMapping(value = "/newItem", params="searchItem",method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String searchItem(@Validated TodoForm form, BindingResult result, Model model)
    {
    	String likeSQL = "select * from todo where content like '%" + form.getContent() + "%'";
		//Récupérer toutes les données de la table todo
		List<Map<String, Object>> ret = jdbcTemplate.queryForList(likeSQL);
		//Générer une liste de données à passer à l'écran
		List<TodoItem> mList = new ArrayList<TodoItem>();
		for(int i=0;i<ret.size();i++)
		{
			TodoItem tmp = new TodoItem();
			tmp.setId(ret.get(i).get("id").toString());
			tmp.setContent(ret.get(i).get("content").toString());
			if(ret.get(i).get("done").toString().equals("false"))
			{
				tmp.setDone(false);
			}
			else
			{
				tmp.setDone(true);
			}
			mList.add(tmp);
		}
		//Définissez la liste à transmettre à l'écran sur Modèle
		model.addAttribute("mList", mList );
		return "todo/todo";
    }
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String index(Locale locale, Model model)
	{
		//Récupérer toutes les données de la table todo
		List<Map<String, Object>> ret = jdbcTemplate.queryForList("select * from todo");
		//Générer une liste de données à passer à l'écran
		List<TodoItem> mList = new ArrayList<TodoItem>();
		for(int i=0;i<ret.size();i++)
		{
			TodoItem tmp = new TodoItem();
			tmp.setId(ret.get(i).get("id").toString());
			tmp.setContent(ret.get(i).get("content").toString());
			if(ret.get(i).get("done").toString().equals("false"))
			{
				tmp.setDone(false);
			}
			else
			{
				tmp.setDone(true);
			}
			mList.add(tmp);
		}
		//Définissez la liste à transmettre à l'écran sur Modèle
		model.addAttribute("mList", mList );
		return "todo/todo";
	}
    @RequestMapping(value = "/restore", method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String restore(@Validated TodoForm form, BindingResult result, Model model)
    {
    	DefaultTransactionDefinition dtDef = new DefaultTransactionDefinition();
    	TransactionStatus tSts = txMgr.getTransaction(dtDef);
    	List<Map<String, Object>> ret = jdbcTemplate.queryForList("select * from todo WHERE id=?",new Object[]{form.getId()});
    	if(ret.size()>0)
    	{
    		TodoItem upItem = new TodoItem();
    		upItem.setId(form.getId());
    		upItem.setContent(form.getContent());
    		upItem.setDone(form.getDone());
    		SqlParameterSource param = new BeanPropertySqlParameterSource(upItem);
    		try
    		{
    			 jdbcTemplate.update("UPDATE todo SET done = ? WHERE id = ?",false,form.getId());
    			 txMgr.commit(tSts);
    		}
    		catch(Exception ex)
    		{
    			txMgr.rollback(tSts);
    			logger.debug("mise à jour a échoué",ex.toString());
    		}
    	}
    	else
    	{
    		logger.debug("Non soumis à mise à jour");
    	}
        return "redirect:/";
    }
    @RequestMapping(value = "/done", method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String done(@Validated TodoForm form, BindingResult result, Model model)
    {
    	DefaultTransactionDefinition dtDef = new DefaultTransactionDefinition();
    	TransactionStatus tSts = txMgr.getTransaction(dtDef);
    	List<Map<String, Object>> ret = jdbcTemplate.queryForList("select * from todo WHERE id=?",new Object[]{form.getId()});
    	if(ret.size()>0)
    	{
    		TodoItem upItem = new TodoItem();
    		upItem.setId(form.getId());
    		upItem.setContent(form.getContent());
    		upItem.setDone(form.getDone());
    		SqlParameterSource param = new BeanPropertySqlParameterSource(upItem);
    		try
    		{
    			 jdbcTemplate.update("UPDATE todo SET done = ? WHERE id = ?",true,form.getId());
    			 txMgr.commit(tSts);
    		}
    		catch(Exception ex)
    		{
    			txMgr.rollback(tSts);
    			logger.debug("mise à jour a échoué",ex.toString());
    		}
    	}
    	else
    	{
    		logger.debug("Non soumis à mise à jour");
    	}
        return "redirect:/";
    }
J'utilise MySQL. La table ressemble à ceci.
CREATE TABLE `todo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(50) DEFAULT NULL,
  `done` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
Cliquez ici pour une source mince: étreindre: https://github.com/pugachev/todomvc.git
Le temps était mauvais ce samedi et dimanche: parapluie2: il faisait froid: flocon de neige: donc je l'ai fait à la main. J'ai également évoqué d'autres personnes. Merci beaucoup.
Recommended Posts