是否可以以更简单的方式输出包含DB值的下拉列表?

时间:2018-03-05 22:44:43

标签: java spring hibernate jsp

这种方式并不是最好的。我正在寻找更好的方法。没有列表可以吗?

我的PageController:

public class CreateUserPageController {

@Autowired
private UserServiceImpl userServiceImpl;


@RequestMapping(value = "/create-user", method = RequestMethod.GET)
public ModelAndView showForm() {
    ModelAndView model = new ModelAndView("admin/create-user");
    model.addObject("user", new User());
    UserRoleDTO[] roles = UserRoleDTO.values();
    List<String> roleNames = new ArrayList<>();
    for (UserRoleDTO role : roles) {
        roleNames.add(role.getName());
    }
    model.addObject("roleNames", roleNames);
    return model;
}

@RequestMapping(value = "/create-user", method = RequestMethod.POST)
public ModelAndView submitForm(@ModelAttribute("user") User user) {
    userServiceImpl.create(user);
    return showForm();
    }
}

我的JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<html>
<head>
    <title>Create test</title>
</head>
<body>

<h1>Create Test</h1>
<form:form method="POST" action="/create-test" modelAttribute="topicTestDTO">
    <form:input path="topic.name" type="text" list="topic_list" placeholder="choose or create topic"/>
    <datalist id="topic_list">
        <c:forEach items="${topicList}" var="topic">
            <option>${topic}</option>
        </c:forEach>
    </datalist>
    <br>
    <form:input path="test.name" type="text" placeholder="create test name"/>
    <input type="submit">
</form:form>
</body>
</html>

感谢您的帮助。 如果您需要更多信息,请告诉我哪一个,我将完成代码。

1 个答案:

答案 0 :(得分:0)

这里的问题是每次请求数据库检索数据,即使数据没有变化也会降低应用程序的性能。

通过使用本地缓存,我们可以实现性能,因此在加载应用程序时,将从数据库中查询自身数据并将其存储在缓存中,然后我们可以重用缓存中的数据。