【问题标题】:How to connect Spring Mvc Controller 5 to jsp file?如何将 Spring Mvc Controller 5 连接到 jsp 文件?
【发布时间】:2018-02-05 23:52:54
【问题描述】:

我正在使用 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;
   }
}

接口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 Script 中的 JSP 中获取来自 Java 的数据。我想填充 JS 容器 myArray1 并根据这些数据执行下一步操作。 谢谢你的帮助。

【问题讨论】:

  • 试试这样的var myArray1 = &lt;c:out value="${users}" /&gt;
  • 是的,我想做这样的事情,但不幸的是这段代码不起作用。正如你所写的那样,我想在 Java 的 JS 中访问 JSP。

标签: javascript java spring jsp spring-mvc


【解决方案1】:

你不能用 JavaScript 做到这一点。反正不是直接的。有一种用 JavaScript 构建 HTML 的 hacky 方法,但您应该依赖 JSP 的内置功能。

您应该使用 JSTL 并使用 c:forEach 循环来构建表。

因此,例如,您可能会这样做:

<table>
  <c:forEach items="${users}" var="user">
     <tr><td>${user}</tr></td>
  </c:forEach>
</table>      

要访问单个字段,只需使用点运算符,例如${user.name}。如果存在,这将自动调用该字段的 getter。

通过将 JSTL 放在顶部,您可以在 JSP 文件中包含 JSTL。

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

您可能还需要将其作为依赖项包含在内。

【讨论】:

  • 感谢您的回复。我知道可以这样做,但我想从 Java 的 spring mvc 访问 Java Script 中的 JSP。我想从Java中用JS填充容器,然后基于这个容器建一个表。
猜你喜欢
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 2014-04-08
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多