2016-04-07 6 views
0

Durum: Yaylı web akışı ve fayans çerçevesini kullanarak bir yay MVC webapp geliştiriyorum. Ben DB customer ve customerAdress iki tablo var ve bunlar için customerModel ve customerAdressModel adlı iki model sınıfları var. Benim flow.xml Şimdi Yaylı web akışında birden fazla modeli tek bir görünüme nasıl bağlayabilirsiniz?

i view-state şu var: Artık:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 
<!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"> 
</head> 
<body> 

<div> 
<form id="Form" method="post" enctype="multipart/form-data" class="form- 
inline">  
    <div class="inputDiv"> 

      <label class="inputLabel"> Name :</label> 
      <input type="text" name="name" id="name">   



      <label class="inputLabel">Email :</label> 
      <input type="email" name="email" id="email"> 

    </div>    
    <input type="button" id="forwardButton" value="Next"/> 
</form> 
</div> 

</body> 
<script> 

$("#forwardButton").click(function(){ 

$("#WlDetailsForm").attr('action','${flowExecutionUrl}&_eventId=next'); 
    $("#WlDetailsForm").submit(); 

}); 
</script> 
</html> 

Sorun:

<var name = "cust" class = "com.model.CustomerModel"/> 

<view-state id = "customerViewState" view = "customer" model = "cust"> 

     <transition on="next" to="customerData"/> 

    </view-state> 

Çini çerçeve aşağıda gösterilmiştir customercustomer.jsp uygun kaynaklarına görünümü giderir customer.jsp'da belirtilen form customerAdressModel özelliklerinin değerini içeren bazı giriş alanlarına sahiptir. Bu yüzdenbağlamak istiyorum Aynı görünüm durumu için customerAdressModel'un yanı sıra'un yanı sıra customerViewState. Bunu nasıl yaparım, bahar DOC'den geçtim ama hiçbir şey bulamadım, lütfen yardım edin!

Not: benim sql tabloları değiştirmek olamaz

cevap

0

Sen kompozit modeli oluşturabilir DTO

public class CompositeModelDto { 

    private CustomerModel suctomer; 

    private CustomerAddressModel address; 

    //setters ang getters ... 

} 

Ve bir görünüm devlet modeline

<var name = "cust" class = "com.model.CustomerModel"/> 
<var name = "address" class = "com.model.CustomerAddressModel"/> 
<var name = "customerDto" class = "com.model.CompositeModelDto"/> 

<view-state id = "customerViewState" view = "customer" model = "customerDto"> 
    <on-entry> 
     <set name="customerDto.customer" value="cust"/> 
     <set name="customerDto.address" value="address"/> 
    </on-entry> 

    <transition on="next" to="customerData"/> 

</view-state> 


GÜNCELLEME olarak kullanmak
Görünümler için Spring'in form etiketi kitaplığını kullanmanızı öneririm. Taglib

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 

tanımlayın ve set ifadeleri ne yaptığını

<form:form method="POST" action="${flowExecutionUrl}&_eventId=next" modelAttribute="customerDto"> 
    <table> 
    <tr> 
     <td><form:label path="customer.name">Name</form:label></td> 
     <td><form:input path="customer.name" /></td> 
    </tr> 
    <tr> 
     <td><form:label path="customer.email">Email</form:label></td> 
     <td><form:input path="customer.email" /></td> 
    </tr> 
    <tr> 
     <td><form:label path="address.addressLine1">Address Line 1</form:label></td> 
     <td><form:input path="address.addressLine1" /></td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <input type="submit" value="Submit"/> 
     </td> 
    </tr> 
    </table> 
</form:form> 
+0

ile jsp formu yerine, neden gerekli mi? –

+0

@varunsinghal 'set' ifadesi' value' ifadesi 'name'de tanımlanan öznitelik sonucunu ayarlar. '', 'customerDto.setCustomer (cust)' anlamına gelir. Her iki setin de müşteri ve adresi DTO'ya yönlendirmek için DTO'ya ayarlanması gerekir. – Evgeny

+0

şüphesiz, customerModel'i giriş parametresi olarak alan bir müşteri hizmetine sahibim ve sonra bu girdi parametresini müşteri Tablosuna ekler. Bunu nasıl başarabilirim? Bunu nasıl yapabilirim: cusomerBuisness.createCustomer (customerDto.cust)? lütfen yardım et ! –

İlgili konular