如何解决Spring Boot-在JSP中显示来自控制器的对象数据
我有一个User类,两个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,这就是为什么您的 <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
<testSource>8</testSource>
<testTarget>8</testTarget>
<showDeprecation>true</showDeprecation>
<compilerArgument>-Xlint:unchecked</compilerArgument>
</configuration>
</plugin>
</plugins>
总是返回findById
的原因。只需从null
方法返回用户即可。显示您的用户实体。
save()
,
在控制器中进行以下更改:
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}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。