2011-02-14 57 views
0

[春天3.0.5] MVCSpring MVC。約願景解決的問題/設計問題

我有類這樣的:

public class Address { 

    private String street; 
    private String city; 

    public String getStreet() { 
    return this.street; 
    } 

    public void setStreet(String street) { 
    this.street = street; 
    } 

    public String getCity() { 
    return this.city; 
    } 

    public void setCity(String city) { 
    this.city = city; 
    } 
} 

我的功能是依靠在添加地址無限多的可能性該網站(帶有spring和表單標籤的JSP)。有人可以在控制器中給出這種功能的骨架嗎?

+0

infinit是什麼意思?世界上的一切都有限制。你的意思是說你需要提交n個Address類型的實例嗎?請詳細說明。 – 2011-02-14 07:52:57

回答

2

你的問題有點不清楚。答案是雙重的:

顯示地址

@Controller 
public class SomeController { 

    @RequestMapping("/somepage.jsp ") 
    public String somePage(HttpServletRequest request, ModelMap model) { 
     List<Address> addresses = .... 
     // We can now access the key "addresses" in our jsp 
     model.put("addresses", addresses); 
     return "/WEB-INF/jsp/somepage.jsp"; 
    } 
} 

在JSP頁面的列表中,您可以顯示使用例如地址列表中,core JSTL的lib,這裏要注意使用前綴c

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<html> 
    ... 

    <c:forEach items="${addresses}" var="addr"> 
     City: ${addr.city} <br/> 
     Street: ${addr.street} 
    </c:forEach> 

    .... 
</html> 

提交地址

如果你正在尋找提交地址的未定義的數字,這是一個多一點棘手。你可以做的是創建一個javasript表單模板,通過按下按鈕或兩個附加的表單字段creates。確保每個表單字段將獲得一個唯一的名稱,例如:

<input type="text" name="street_1" /> 
<input type="text" name="city_1" /> 

<input type="text" name="street_2" /> 
<input type="text" name="city_2" /> 

.... 

然後你可以使用request.getParameterMap(),在那裏你構建基於匹配名稱(例如,street_1應該CITY_1等相關地址選項迭代領域向前)。

[編輯]爲了給你一個關於javascript的樣子,我從頭開始給你這個(注意我沒有測試過這個代碼,它給了你一個想法它可能可能看起來像)。

var i = 0; // initialize to how many addresses you initially display 
function addAddress() { 
    var form = document.getElementById('form'); 
    var html = '<input type="text" name="street_' + i + '" />' + 
       '<input type="text" name="city_' + i + '" />'; 
    form.innerHTML += html; 
    i++; 
} 

按下一個按鈕時,然後調用JavaScript:

<input type="button" onClick="addAddress();" value="add address" /> 

如果你決定使用例如,jQuery這將是更容易。例如,

var i = 0: 
$("#addbtn").click(function() { 
    $("#someId").append(
     '<input type="text" name="street_' + i + '" />' + 
     '<input type="text" name="city_' + i + '" />'); 
    i++; 
}); 
+0

@Johan,你的解決方案是對的,但我認爲這個人想提交未定義地址的表單。 – 2011-02-14 08:44:13