从jsp向spring控制器发送同一类的多个对象

时间:2012-10-30 08:14:38

标签: jsp spring-mvc

当我在jsp中保持两个输入名称相同时。我希望他们应该在两个不同的对象中来到控制器。 @ModelAttribut

@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addAdvertiser(@ModelAttribute("userInfoEntity") UserInfoEntity userInfoEntity,@ModelAttribute("addressEntity") AddressEntity personalAddress,@ModelAttribute("addressEntity") AddressEntity billingAddress){
// save this two address to my userInfo Entity 
// here i had one to many relationaship. from UserInfoEntity to AddressEntity
}

我的JSP如下:

Personal Address
<div class="label"><b>Address 1 :</b></div>
                        <div class="leftSide"><input type="text" name="address1" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>City :</b></div>
                        <div class="leftSide"><input type="text" name="city" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>Zipcode :</b></div>
                        <div class="leftSide"><input type="text" name="zipcode" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>Address 2 :</b></div>
                        <div class="leftSide"><input type="text" name="address2" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>State :</b></div>
                        <div class="leftSide"><input type="text" name="state" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>Phone :</b></div>
                        <div class="leftSide"><input type="text" name="phone" class="textBox" style="width:250px;" /></div>




Billing Address
                        <div class="label"><b>Address 1 :</b></div>
                        <div class="leftSide"><input type="text" name="address1" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>City :</b></div>
                        <div class="leftSide"><input type="text" name="city" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>Zipcode :</b></div>
                        <div class="leftSide"><input type="text" name="zipcode" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>Address 2 :</b></div>
                        <div class="leftSide"><input type="text" name="address2" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>State :</b></div>
                        <div class="leftSide"><input type="text" name="state" class="textBox" style="width:250px;" /></div>

                        <div class="label"><b>Phone :</b></div>
                        <div class="leftSide"><input type="text" name="phone" class="textBox" style="width:250px;" /></div>

请告诉我解决方案,如何从jsp向控制器发送两个相同AddressEntity的对象,为输入类型的属性“name”保留相同的值。

在给定的Senario中,我得到的是对象,但它包含两个地址的值,以“,”(逗号)分隔。

3 个答案:

答案 0 :(得分:0)

如果名称相同,它将返回一个对象数组,这就是为什么当您尝试打印它时,它会显示逗号分隔的字符串。

  

您需要将对象强制转换为返回类型的数组(可能   在你的情况下字符串)。并获取值arr [0]和arr [1]。

答案 1 :(得分:0)

您需要按如下方式创建AddressDataBean

public class AddressDataBean {
    private Address personalAddress;
    private Address billingAddress;

    // Getters and Setters for the properties;
}

和地址类如下。

public class Address {
    // All the address fields those are in your jsp.

    // Getters and setters for the fields.
}

在你的jsp中,你需要使用spring form taglib并绑定个人地址字段和billingAddress字段。

例如。和

在控制器中,您需要将AddressDataBean定义为@ModelAttribute。

修改

您可以在 UserInfoEntity bean中拥有personalAddress和billingAddress属性。我后来意识到了。 :)

希望这会对你有所帮助。

答案 2 :(得分:0)

我们可以在文档中找到它,只需阅读有关嵌套属性的部分。

对于提供的案例,您需要正确设置字段名称:

user.address[0].city
user.address[1].city
user.address[2].city

和剩下的一样。