2017-12-01 9 views
0

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 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; 
    } 
} 

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; 

をJSPのドロップダウンで正しい値を選択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> 

jsp?のpaymentNamesのドロップダウンで正しい値を選択するにはどうすればよいですか。

答えて

0

form:selectに追加してください。 Springは、一致するオプション値をpathで選択します。

<form:select path="paymenttype" itemValue="paymenttype"> 
    <form:options items="${client.paymentnames}" /> 
</form:select> 

UPDATE

お使いのモデル名は "コマンド" である属性:

@ModelAttribute("command") ClientBean clientBean 

しかし、あなたはあなたのclientを更新した後、あなたは別のモデルの属性(つまり、クライアントでそれを保存しています)の名前は次のとおりです。

model.put("client", prepareClientBean(clientService.getClient(clientBean.getClientid()))); 

したがって、バインド操作が正しく機能していません。あなたはそれを関連するお使いのモデル名やフォーム要素を変更した場合

SOLUTION

だから、それはおそらく動作しますします。 @ModelAttribute( "コマンド")と同じ

モデル名:

​​

と春フォーム:

<form:select path="paymenttype"> 
    <form:options items="${command.paymentnames}" /> 
</form:select> 

OR

あなたはclientという名前のモデルを使用することができます。しかし、この場合は、modelAttribute = "client"(またはcommandName = "client")をspring形式で追加する必要があります。

@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> 

Also: Javaは、クラス、インターフェイス、メソッド、変数の命名にキャメルケースの構文に従います。 paymenttypeの代わりにpaymentTypeを使用してください。

+0

回答ありがとうございます。同じ操作が編集操作では機能していません。 – dhS

+0

@dhS私は私の答えを更新しました。私はそれがうまくいきたい –