【问题标题】:Spring MVC jsp return an item from a selectSpring MVC jsp从选择中返回一个项目
【发布时间】:2015-03-19 17:22:19
【问题描述】:

我想我正在尝试做一些非常简单的事情,但我一直在苦苦挣扎!

基本上我想打开一个带有 1 个选择的表单,该表单由一个相当简单的用户类型项目列表填充。

@Entity
@Table(name = "user")
public class User {

@Id  private String userId; 
private String userName;
private String passwordCode;
private Date dateOfBirth;

    public String getUserId() {
    return userId;
}

public String getUserName() {
    return userName;
}

public String get PasswordCode () {
    return passwordCode;
}

public Date getDateofBirth() {
    return dateOfBirth;
}
}

我想通过 spring MVC 作为 modelAttribute 将所选项目返回为 SelectedUser。

所以我在控制器中这样做

@Controller
@RequestMapping("/")
public class HomeController  extends JFrame { 

@Autowired private MeetingDAO meetingDAO;

@RequestMapping(method = RequestMethod.GET)
public String HomePage(@ModelAttribute("selectedUser") User selectedUser, Model model) {

    List<User> userlist = userDAO.ListAll();
    model.addAttribute("userlist ", userlist);

    return "Home";
}

抱歉,我之前曾问过这个问题,因为我刚刚意识到我之前误解了机制。不幸的是,现在我明白了,我仍然有点茫然。我想要一个用户类型的列表并将选择的项目返回为“selectedUser”。

据我所知,我不能这样做 -

<form:form action="home" method="Post" modelAttribute="selectedUser" >
<form:select path="selectedUser" >
    <form:options items="${userlist}" itemValue="userId"  itemLabel="userName" />
</form:select>

因为路径想要设置 User 的一个属性并且不会设置对象本身?

如果我这样做而不是 Spring 标记 -

<select id="userlist" name=Users onchange="changeFunc(value);">
    <c:forEach var="u" items="${userlist}" >
        <option value="${u}" >${u[1]} (ID:${u[0]})</option>
    </c:forEach>
</select>

我看不到如何将选定的值分配给“selectedUser”模型属性。

这是可能的还是我试图以错误的方式做到这一点。这似乎是一个非常简单的任务,我无法掌握!可能我应该只返回请求对象中的选定对象吗?不过我希望使用 Spring 机制。

【问题讨论】:

    标签: jsp spring-mvc


    【解决方案1】:

    实现你想要的最简单的方法是这样的:

    控制器:

    @RequestMapping(value = "/select-user", method = RequestMethod.GET)
    public String selectUser(Model model)
    {
        model.addAttribute("usersList", userService.getAllUsers());
        model.addAttribute("selectedUser", new User());
        return "jspPageName";
    }
    
    @RequestMapping(value = "/select-user", method = RequestMethod.POST)
    public String selectUserAction(@ModelAttribute("selectedUser") User selectedUser, Model model)
    {
        // if you need only selected user id just use it
        System.out.println("Selected user: " + selectedUser.getUserId());
    
        // if you need whole user object take it from database using id
        selectedUser = userService.getUserByID(selectedUser.getUserId());
        System.out.println("Selected user: " + selectedUser);
    
        return "redirect:/";
    }
    

    JSP 表单:

        <form:form method="post" commandName="selectedUser">
            <form:select path="userId">
                 <form:options items="${usersList}" itemValue="userId" itemLabel="userName" />
            </form:select>
            <button class="btn btn-reg">SUBMIT</button>
        </form:form>
    

    【讨论】:

    • 非常感谢。实际上,虽然这非常有用,但它也让我意识到我已经在错误的地方寻找了 1 - 2 天!当我不是直接从休眠状态从存储过程中填充 UserList 时,它实际上并不是一个会议对象列表,而是一个逗号分隔值的列表。哎哟!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2017-02-14
    • 2012-11-22
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多