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