【发布时间】:2014-11-26 11:47:53
【问题描述】:
我是 Spring MVC 的新手,我正在尝试创建一个小应用程序,从这个 page 获取一些信息。我有两个按钮:“显示页面信息”按钮,单击它会转到PageController 中的GetPageInfo 方法,以及“保存”按钮,它会获取显示的信息,使用@Validated 注释验证它们,如果它们经过验证后,它调用另一个 jsp 页面 pageSaveSuccess。
这是我的代码:
@Controller
public class PageController {
@Autowired
private PageService pageService;
@Autowired
@Qualifier("pageValidator")
private Validator validator;
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
@RequestMapping("/")
public ModelAndView showPage(){
Map<String, Object> model = new HashMap<String, Object>();
return new ModelAndView("page", model);
}
@RequestMapping(value= "/getPage", method = RequestMethod.GET)
public ModelAndView GetPageInfo(@ModelAttribute("page") PageVO pageVO, ModelMap model) {
Page page = pageService.GetPageInfo();
pageVO = convertToVO(page);
System.out.println("Page name Service: " + pageVO.getName());
model.addAttribute("page", pageVO);
return new ModelAndView("page", model);
}
@RequestMapping(value = "/savePage", method = RequestMethod.POST)
public String savePage(@ModelAttribute("page") @Validated PageVO page, BindingResult bindingResult, Model model) {
System.out.println("Saving the Page info: " + page.getName());
if (bindingResult.hasErrors()) {
System.out.println("Returning page.jsp page");
return "page";
}
System.out.println("Returning pageSaveSuccess.jsp page");
model.addAttribute("page", page);
return "pageSaveSuccess";
}
public PageVO convertToVO(Page page) {
PageVO pVO = new PageVO();
pVO.setName(page.getName());
pVO.setAbout(page.getAbout());
pVO.setPhone(page.getPhone());
pVO.setWebsite(page.getWebsite());
return pVO;
}
}
而jsp页面是:
<form:form action="savePage" commandName="page" method="POST">
<input type="button" onclick="location.href='${pageContext.request.contextPath}/getPage'" value="Display Page Info" >
<ul>
<li>
<label style="width: 75px">Name</label><input type="text" value="${page.name}" style="margin: 8px 100px 5px 100px; width: 200px;" />
</li>
<li>
<label style="width: 75px">About</label> <input type="text" value="${page.about}" style="margin: 8px 100px 5px 100px; width: 400px;" />
</li>
<li>
<label style="width: 75px">Website</label> <input type="text" value="${page.website}" style="margin: 8px 100px 5px 100px; width: 200px;" />
</li>
<li>
<label style="width: 75px">Phone</label> <input type="text" value="${page.phone}" style="margin: 8px 100px 5px 100px; width: 200px;" />
</li>
</ul>
<input type="submit" value="Save"/>
</form:form>
问题是当我点击“显示页面信息”时,信息在文本框中显示得很好,但是当我点击“保存”时,页面对象在到达savePage 方法时为空,因为控制台显示此日志:Saving the Page info: null。
我的错误是什么? jsp页面中已经显示的页面信息如何返回? 谢谢。
【问题讨论】:
-
System.out.println("Saving the Page info: " + page.getName());打印Saving the Page info: null并不意味着页面为空,只是 page.getName() 为空! -
mmm 是的,你是对的,但为什么它不返回页面的属性?我的意思是名字、网站、电话……
标签: java jsp spring-mvc