在Spring Controller方法中,我想从jsp文件中发布的内容中丰富Model元素。
这是代码功能的开始。 每次输入函数时,模型都是无效的。有关于此的任何暗示吗?
@RequestMapping(value = Uris.IMPORTADDRBOOK)
public String mainImportController(HttpServletRequest request, HttpServletResponse response, Model model,
@RequestParam(value = "chosenSP", required = false) String bookToImportName,
@RequestParam(value = "catMode", required = false) String catMode,
@RequestParam(value = "transition", required = false) ImportControllerTransitions transition) {
logger.debug(String.format("controller import. Etat entrée : %s, transition demandée : %s, chosen SP : %s, catmode : %s",
model.asMap().get("importState"), transition, bookToImportName, catMode));
logger.debug(String.format("Modele Entree Import Controller:"));
for (String attribute : model.asMap().keySet())
logger.debug(String.format("%s : %s", attribute, model.asMap().get(attribute)));
if (!model.containsAttribute("importState"))
model.addAttribute("importState", ImportControllerState.INITIAL);
switch ((ImportControllerState) model.asMap().get("importState")) {
case INITIAL:
if (transition == ImportControllerTransitions.CONNECTORCHOICE) {
model.addAttribute("importState", ImportControllerState.CONNECTOR);
if (bookToImportName != null)
model.addAttribute("chosenSP", DynAddrBookTypes.valueOf(bookToImportName));
}
break;
default:
break;
}
logger.debug(String.format("Modele sortie Import Controller:"));
for (String attribute : model.asMap().keySet())
logger.debug(String.format("%s : %s", attribute, model.asMap().get(attribute)));
return Uris.IMPORTADDRBOOK;
}
JSP可以正确读取模型属性但是当我回到控制器时,模型再次为空...... 提前谢谢,
答案 0 :(得分:0)
对上面的Bart's条评论进行跟进,并在Donal Boyle的this related SO question回答,@SessionAttributes
是保留模型对象值的正确方法,尽管Spring MVC服务器端是无状态的。
我的问题中的代码工作得很好,前提是类声明包含@SessionAttributes
注释,如下所示:
@Controller
@SessionAttributes({ "importState", "chosenSP", "catMode" })
public class ImportContactController {