spring 启动 - 在 JSP 中显示来自控制器的对象数据
spring boot - displaying object data from controller in JSP
我有一个用户 class、两个 JSP 和一个控制器。我想注册一个用户,将他们的详细信息存储在数据库 (H2) 中,并在注册后显示用户名。
这是我的 home.jsp
-
<form action="addUser">
<label>Name: </label><input type="text" name="name"/>
<label>Id: </label><input type="number" name="id"/>
<input type="submit" />
</form>
这是我的控制器 -
package com.example.demo;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@Autowired
UserRepo usrrepoobj;
@RequestMapping("/")
public String home()
{
return "home.jsp";
}
@RequestMapping("addUser")
public ModelAndView addUser(@RequestParam int id, User usr)
{
usrrepoobj.save(usr);
User obj = usrrepoobj.findById(id).orElse(null);
ModelAndView mv = new ModelAndView();
mv.addObject(obj);
mv.setViewName("afterRegister.jsp");
//EVEN THIS DOESNT WORK
// usrrepoobj.save(usr);
// User obj = usr;
// ModelAndView mv = new ModelAndView();
// mv.addObject(obj);
// mv.setViewName("afterRegister.jsp");
//EVEN THIS DOESNT WORK
return mv;
}
}
这是我的 afterRegister.jsp
-
Registered as ${obj.name}
对象被添加到数据库中。在下一个 JSP 中显示数据时,我做错了什么?
可能您不知道添加用户的 ID,这就是为什么您的 findById
return 总是 null
。来自 save()
方法的 return 用户。显示您的用户实体。
@RequestMapping("addUser")
public String addUser(@RequestParam int id, User usr, Model model)
{
User obj = usrrepoobj.save(usr);
model.addAttribute("obj", obj);
return "afterRegister.jsp";
}
在控制器中进行以下更改:
usrrepoobj.save(usr);
User obj = usrrepoobj.findById(id).orElse(null);
ModelAndView mv = new ModelAndView();
mv.addObject("object",obj); //change this
mv.setViewName("afterRegister.jsp");
在afterRegister.jsp-
Registered as ${object.name}
我有一个用户 class、两个 JSP 和一个控制器。我想注册一个用户,将他们的详细信息存储在数据库 (H2) 中,并在注册后显示用户名。
这是我的 home.jsp
-
<form action="addUser">
<label>Name: </label><input type="text" name="name"/>
<label>Id: </label><input type="number" name="id"/>
<input type="submit" />
</form>
这是我的控制器 -
package com.example.demo;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@Autowired
UserRepo usrrepoobj;
@RequestMapping("/")
public String home()
{
return "home.jsp";
}
@RequestMapping("addUser")
public ModelAndView addUser(@RequestParam int id, User usr)
{
usrrepoobj.save(usr);
User obj = usrrepoobj.findById(id).orElse(null);
ModelAndView mv = new ModelAndView();
mv.addObject(obj);
mv.setViewName("afterRegister.jsp");
//EVEN THIS DOESNT WORK
// usrrepoobj.save(usr);
// User obj = usr;
// ModelAndView mv = new ModelAndView();
// mv.addObject(obj);
// mv.setViewName("afterRegister.jsp");
//EVEN THIS DOESNT WORK
return mv;
}
}
这是我的 afterRegister.jsp
-
Registered as ${obj.name}
对象被添加到数据库中。在下一个 JSP 中显示数据时,我做错了什么?
可能您不知道添加用户的 ID,这就是为什么您的 findById
return 总是 null
。来自 save()
方法的 return 用户。显示您的用户实体。
@RequestMapping("addUser")
public String addUser(@RequestParam int id, User usr, Model model)
{
User obj = usrrepoobj.save(usr);
model.addAttribute("obj", obj);
return "afterRegister.jsp";
}
在控制器中进行以下更改:
usrrepoobj.save(usr);
User obj = usrrepoobj.findById(id).orElse(null);
ModelAndView mv = new ModelAndView();
mv.addObject("object",obj); //change this
mv.setViewName("afterRegister.jsp");
在afterRegister.jsp-
Registered as ${object.name}