我正在使用 Spring 5。我有 UserController.java:
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public String userForm(Locale locale, Model model) {
model.addAttribute("users", userService.list());
return "editUsers";
}
@ModelAttribute("user")
public User formBackingObject() {
return new User();
}
@PostMapping("/addUser")
public String saveUser(@ModelAttribute("user") @Valid User user, BindingResult result, Model model) {
if (result.hasErrors()) {
model.addAttribute("users", userService.list());
return "editUsers";
}
userService.save(user);
return "redirect:/";
}
}
我还有 User.java 类:
public class User {
public User() {
this.name = "";
this.email = "";
}
public User(String name, String email) {
this.name = name;
this.email = email;
}
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
接口(interface)UserService.java:
public interface UserService {
void save(User user);
List<User> list();
}
和UserServiceImp.java:
@Service
public class UserServiceImp implements UserService {
private List<User> listattt = new ArrayList<>();
@Transactional
public void save(User user) {
listattt.add(user);
}
@Transactional(readOnly = true)
public List<User> list() {
listattt.add(new User("a", "a@g.com"));
listattt.add(new User("b", "b@g.com"));
listattt.add(new User("c", "c@g.com"));
return listattt;
}
}
和EditUsers.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<script language="javascript" type="text/javascript">
var myArray1 = "${users}";////----->>>> ERROR HOW TO CONNECT USER LIST FROM CONTROLLER TO JSP FILE
var myTable= "<table><tr><td>User column</td>";
for (var i=0; i<3; i++) {
myArray1[i] = myArray1[i].toFixed(3);
myTable+="<tr><td> " + myArray1[i] + " </td>";
}
myTable+="</table>";
document.write(myTable);
</script>
</html>
现在我想将 UserController 中的用户列表与 editUsers.jsp 连接起来,但我不知道该怎么做?我试图做类似 var myArray1 = "${users}"; 的事情但没有成功。一般来说,我希望在 Java 脚本中的 JSP 中获取来自 Java 的数据。我想填充 JS 容器 myArray1 并根据此数据执行下一步操作。谢谢您的帮助。
你不能用 JavaScript 做到这一点。无论如何,不是直接的。有一种使用 JavaScript 构建 HTML 的巧妙方法,但您应该依赖 JSP 的内置功能。</p>
您应该使用 JSTL 并使用 c:forEach
循环来构建表。
例如,您可能会这样做:
<table>
<c:forEach items="${users}" var="user">
<tr><td>${user}</tr></td>
</c:forEach>
</table>
为了访问各个字段,只需使用点运算符,例如${用户名}
。如果字段存在,这将自动调用该字段的 getter。
通过将 JSTL 放在顶部,可以将 JSTL 包含在 JSP 文件中。
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
您可能还需要将其作为依赖项包含在内。
我是一名优秀的程序员,十分优秀!