在jsp编辑时的下拉列表中选择正确的值
ClientBean在jsp编辑时的下拉列表中选择正确的值,jsp,spring-mvc,Jsp,Spring Mvc,ClientBean import java.util.ArrayList; import java.util.Date; public class ClientBean { private Integer clientid; private String clientname; private String paymenttype; private Date joiningdate; private String email; private
import java.util.ArrayList;
import java.util.Date;
public class ClientBean {
private Integer clientid;
private String clientname;
private String paymenttype;
private Date joiningdate;
private String email;
private ArrayList<String> paymentnames;
public ArrayList<String> getPaymentnames() {
return paymentnames;
}
public void setPaymentnames(ArrayList<String> paymentnames) {
this.paymentnames = paymentnames;
}
public Integer getClientid() {
return clientid;
}
public void setClientid(Integer clientid) {
this.clientid = clientid;
}
public String getClientname() {
return clientname;
}
public void setClientname(String clientname) {
this.clientname = clientname;
}
public String getPaymenttype() {
return paymenttype;
}
public void setPaymenttype(String paymenttype) {
this.paymenttype = paymenttype;
}
public Date getJoiningdate() {
return joiningdate;
}
public void setJoiningdate(Date joiningdate) {
this.joiningdate = joiningdate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
import java.util.ArrayList;
导入java.util.Date;
公共类ClientBean{
私有整数clientid;
私有字符串clientname;
私有字符串paymenttype;
私人日期合并日期;
私人字符串电子邮件;
私人ArrayList paymentnames;
公共阵列列表getPaymentnames(){
返回PaymentName;
}
public void setPaymentnames(ArrayList paymentnames){
this.paymentnames=paymentnames;
}
公共整数getClientid(){
返回客户ID;
}
public void setClientid(整数clientid){
this.clientid=clientid;
}
公共字符串getClientname(){
返回clientname;
}
public void setClientname(字符串clientname){
this.clientname=clientname;
}
公共字符串getPaymenttype(){
返回付款类型;
}
公共void setPaymenttype(字符串paymenttype){
this.paymenttype=paymenttype;
}
公共日期getJoiningdate(){
返回接合日期;
}
公共无效设置加入日期(加入日期){
this.joiningdate=joiningdate;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
}
ClientController
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public ModelAndView editClient(@ModelAttribute("command") ClientBean clientBean,
BindingResult result){
Map<String, Object> model = new HashMap<String, Object>();
model.put("client", prepareClientBean(clientService.getClient(clientBean.getClientid())));
return new ModelAndView("addClient", model);
}
private ClientBean prepareClientBean(Client client){
ClientBean bean = new ClientBean();
ArrayList<String> modes = new ArrayList<String>();
modes.add("Monthly");
modes.add("Quaterly");
modes.add("Half-Yearly");
modes.add("Yearly");
bean.setPaymentnames(modes);
bean.setClientname(client.getClientname());
bean.setEmail(client.getEmail());
bean.setJoiningdate(client.getJoiningdate());
bean.setPaymenttype(client.getPaymenttype());
bean.setClientid(client.getClientid());
return bean;
@RequestMapping(value=“/edit”,method=RequestMethod.GET)
public ModelAndView editClient(@modeldattribute(“command”)ClientBean ClientBean,
BindingResult(结果){
映射模型=新的HashMap();
put(“client”,prepareClientBean(clientService.getClient(clientBean.getClientid()));
返回新模型和视图(“添加客户端”,模型);
}
私有客户端Bean prepareClientBean(客户端){
ClientBean=新ClientBean();
ArrayList模式=新建ArrayList();
模式。添加(“每月”);
模式。添加(“四分之一”);
模式。添加(“半年”);
模式。添加(“年度”);
setPaymentnames(模式);
setClientname(client.getClientname());
setEmail(client.getEmail());
setJoiningdate(client.getJoiningdate());
setPaymenttype(client.getPaymenttype());
setClientid(client.getClientid());
返回豆;
及
addClient.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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Add Client Data</title>
</head>
<script>src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<body>
<h2>Add Client Data</h2>
<form:form method="POST" action="/ClientDetails/save.html" onsubmit="return ValidateForm();">
<table>
<tr>
<td><form:label path="clientid">Client ID:</form:label></td>
<td><form:input path="clientid" value="${client.clientid}" readonly="true"/></td>
</tr>
<tr>
<td><form:label path="clientname">Client Name:</form:label></td>
<td><form:input path="clientname" value="${client.clientname}"/></td>
<tr>
<td><form:label path="paymenttype">Client Payment Type:</form:label></td>
<td><form:select path="paymenttype">
<form:options items="${client.paymentnames}" itemValue="{client.clientid}" />
</form:select></td>
</tr>
<tr>
<td><form:label path="joiningdate">Client Joining Date:</form:label></td>
<td><form:input path="joiningdate" value="${client.joiningdate}"/></td>
</tr>
<tr>
<td><form:label path="email">Client Email:</form:label></td>
<td><form:input path="email" value="${client.email}"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Submit"/></td>
</tr>
</table>
</form:form>
<c:if test="${!empty clients}">
<h2>List Clients</h2>
<table align="left" border="1">
<tr>
<th>Client ID</th>
<th>Client Name</th>
<th>Payment Type</th>
<th>Joining Date</th>
<th>Client Email</th>
</tr>
<c:forEach items="${clients}" var="client">
<tr>
<td><c:out value="${client.clientid}"/></td>
<td><c:out value="${client.clientname}"/></td>
<td><c:out value="${client.paymenttype}"/></td>
<td><c:out value="${client.joiningdate}"/></td>
<td><c:out value="${client.email}"/></td>
<td align="center"><a href="edit.html?clientid=${client.clientid}">Edit</a> </td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
添加客户端数据
src=”https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
添加客户端数据
客户端ID:
客户名称:
客户付款类型:
客户加入日期:
客户电子邮件:
列出客户
客户端ID
客户名称
支付类型
加入日期
客户电子邮件
如何在jsp中的paymentNames下拉列表中选择正确的值?请尝试在
表单中添加itemValue=“paymenttype”
:选择。Spring将选择通过路径匹配的选项值
<form:select path="paymenttype" itemValue="paymenttype">
<form:options items="${client.paymentnames}" />
</form:select>
但是,在更新了客户端之后,您将其保存在不同的模型属性(即客户端)名称中,如下所示:
model.put("client", prepareClientBean(clientService.getClient(clientBean.getClientid())));
因此绑定操作无法正常工作
解决方案
因此,如果您更改模型名称并形成与之相关的元素,它可能会起作用
模型名称与@modeldattribute(“命令”)相同:
和弹簧形式:
<form:select path="paymenttype">
<form:options items="${command.paymentnames}" />
</form:select>
另外:
Java使用camelcase语法来命名类、接口、方法和变量。您应该使用paymentType
而不是paymentType
,谢谢您的回答,同样的方法不适用于编辑操作。
model.put("command", prepareClientBean(clientService.getClient(clientBean.getClientid())));
<form:select path="paymenttype">
<form:options items="${command.paymentnames}" />
</form:select>
@ModelAttribute("client") ClientBean clientBean
model.put("client", prepareClientBean(clientService.getClient(clientBean.getClientid())));
<form:form method="POST" modelAttribute="client">
<form:select path="paymenttype">
<form:options items="${client.paymentnames}" />
</form:select>
</form:form>