0

我有一个表单jsp,并在提交时重定向到一个成功的jsp。表单元素的输入将由会话属性使用值对象捕获并呈现在成功页面中。代码如下,

表单控制器:

@Controller
@RequestMapping("/userRegistration.htm")
@SessionAttributes("user")
public class UserController {

private UserService userService;

@Autowired
public void setUserService(UserService userService) {
    this.userService = userService;
}

@ModelAttribute("countryList")
public List<Country> populateCountryList() {
    return userService.getAllCountries();
}

@ModelAttribute("communityList")
public List<Community> populateCommunityList() {
    return userService.getAllCommunities();
}

@RequestMapping(method = RequestMethod.GET)
public String showUserForm(ModelMap model) {
    User user = new User();
    model.addAttribute("user", user);
    return "userForm";
}

@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("user") User user,ModelMap model) {
    userService.add(user);
    return "forward:userSuccess.htm";

成功控制器:

  @Controller
  public class UserSuccessController {

@RequestMapping("/userSuccess.htm")
public String redirect()
{
    return "userSuccess";

用户成功jsp:

User Details
<hr>
User Name   : ${User.getName()} <br/>
Gender      : <c:out value="${User.getGender()}"></c:out> <br/>
Country     : <c:out value="${User.country}"></c:out> <br/>
About You   : <c:out value="${user.aboutYou}"></c:out> <br/>
Community   : 
<c:forEach var="community" items="${user.communityList}" >
<c:out value="${community}"></c:out>
</c:forEach> <br />
Mailing List: <c:out value="${user.mailingList} "></c:out>

但实际上我得到的输出是,

User Details 
--------------------------------------------------------------------------------
User Name : ${User.getName()} 
Gender : ${User.getGender()} 
Country : ${User.country} 
About You : ${user.aboutYou} 
Community : ${community} 
Mailing List: ${user.mailingList}

请帮忙。提前致谢。

4

3 回答 3

0

我认为您需要添加onSubmit方法,因为在视图中,如果您使用具有上述属性的表单,则不会使用带有属性的model.addAttribute(user);表单 ,那么您不需要,因为该属性以某种方式与您的 onSubmit @ModelAttribute("user") 链接。
modelAttribute="user"
model.addAttribute(object);

于 2013-05-15T08:11:53.963 回答
0

首先,您将控制器中的模型属性定义为用户(小写),但以用户(大写)访问它。记住 Java 语言是区分大小写的。
其次,我假设您已经在 User 类中定义了方法 getName()、getGender() 等,如果是这种情况,您可以按如下方式访问 JSP 中的用户对象字段(Java Beans 约定):

User Details
<hr>
User Name   : <c:out value="${user.name}" /> <br/>
Gender      : <c:out value="${user.gender}" /> <br/>

我希望这有帮助

于 2013-05-16T11:33:24.810 回答
0

@Taoufik 和 Krisandra 感谢您的帮助。案件冲突是我的试验。首先,我只尝试使用小写字母。我发现了问题。这是由于使用的 tomcat 的版本。我的 tomcat 5.5 不支持 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>。所以我用了tomcat7.04

于 2013-05-17T06:02:24.937 回答