gpt4 book ai didi

spring - Spring MVC Controller 如何绑定(bind)到 JSP 页面?

转载 作者:行者123 更新时间:2023-12-04 19:54:00 28 4
gpt4 key购买 nike

您好,我是 spring 的新手,我正在尝试开发一个简单的 portlet,它接受用户的名字和姓氏,并使用 hibernate 将其保存到 db。

基本上我搞不懂jsp和controller是怎么通信的;我在这里遗漏了一些内容。

这是我的第一个需要调用的 Controller (我在哪里提到的?)

    package codes.controller;

import javax.portlet.RenderResponse;

import codes.base.User;
import codes.service.UserService;

@Controller(value="SimpleUserController")
@RequestMapping(value = "VIEW")
public class SimpleUserController {

// -- auto-wiring of service dependency
@Autowired
@Qualifier("userService")
private UserService userService;

// --maps the incoming portlet request to this method
@RenderMapping
public String showUsers(RenderResponse response) {
return "home";
}

@ExceptionHandler({ Exception.class })
public String handleException() {
return "errorPage";
}

// -- @ModelAttribute here works as the referenceData method
@ModelAttribute(value="user")
public User getCommandObject() {
return new User();
}
}

最初我显示一个 home.jsp,它将显示带有两个输入框和一个提交按钮的表单。

<%@include file="include.jsp" %> 

<portlet:actionURL var="addUserActionUrl">
<portlet:param name="myaction" value="addUser" />
</portlet:actionURL>

<form:form name="home" commandName="user" method="post"
action="${addUserActionUrl}">

<table>
<tr>
<td>First Name:<font style="color: #C11B17;">*</font></td>
<td><form:input path="firstname" /></td>
</tr>
<tr>
<td>Last Name:<font style="color: #C11B17;">*</font></td>
<td><form:input path="lastname" /></td>
</tr>

<table align="right">
<tr>
<td>&nbsp;</td>
<td><input type="submit" value="SUBMIT" /></td>
</tr>
</table>
</table>

</form:form>

此 JSP 应调用 AddUserController.java 中的操作方法:

package codes.controller;

import javax.portlet.ActionResponse;
import javax.portlet.RenderResponse;

import codes.base.User;
import codes.service.UserService;

@Controller(value = "AddUserController")
@RequestMapping(value = "VIEW")
public class AddUserController {

@Autowired
@Qualifier("userService")
private UserService userService;

@RenderMapping(params = "myaction=addUser")
public String showRegisterPage(Model model) {
model.addAttribute("user", new User());
model.addAttribute("users", getUsers());
return "addUser";
}

public List<User> getUsers() {
return userService.getAllUsers();
}

@ActionMapping(params = "myaction=addUser")
public void addBook(@ModelAttribute(value = "user") User user,
BindingResult bindingResult, ActionResponse response,
SessionStatus sessionStatus) {
if (!bindingResult.hasErrors()) {
userService.addUser(user);
response.setRenderParameter("myaction", "users");
sessionStatus.setComplete();
} else {
response.setRenderParameter("myaction", "addUser");
}
}
}

这一次这个名字+姓氏应该保存在数据库中并且屏幕应该刷新以显示一个新表单,该表单将有一个下拉列表,其中包含数据库中的当前用户名和另一个第一个name 和 last name 表单字段。如果您从下拉列表中选择用户名,则会填充表单字段,您可以编辑这些值并单击更新按钮以将值保存在数据库中。否则,您可以使用提交按钮向数据库添加新用户。

添加用户.jsp:

<%@include file="include.jsp" %> 

<portlet:actionURL var="addUserActionUrl">
<portlet:param name="myaction" value="addUser" />
</portlet:actionURL>
<portlet:renderURL var="homeUrl">
<portlet:param name="myaction" value="Users" />
</portlet:renderURL>
<script type="text/javascript" src="js/userRelated.js"></script>

<form:form name="addUser" commandName="user" method="post"
action="${addUserActionUrl}">
<form:select path="model">
<form:option value="NONE" label="--- Select ---" id="userList" onchange="showHide()"/>
<form:options items="${users}" />
</form:select>

<table>
<tr>
<td>First Name:<font style="color: #C11B17;">*</font></td>
<td><form:input path="firstname" /></td>

</tr>
<tr>
<td>Last Name:<font style="color: #C11B17;">*</font></td>
<td><form:input path="lastname" /></td>

</tr>

<table align="right">
<tr>
<td>&nbsp;</td>
<td><input type="submit" id="submit" value="SUBMIT" />SUBMIT</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" id="update" value="SUBMIT" />UPDATE</td>
</tr>
</table>
</table>

</form:form>

我使用 onchange of dropdown 隐藏和取消隐藏 SUBMIT/UPDATE 按钮。如何根据可用按钮调用 addUsercontroller 中的不同函数?

最佳答案

通过javascript更新表单元素的action属性

关于spring - Spring MVC Controller 如何绑定(bind)到 JSP 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17164517/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com