2012-10-30 21 views
0

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

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

请告诉我你的解决方案,我怎么能发送相同AddressEntity的两个对象从JSP到控制器保持相同的值属性“名”的输入类型。

在给定的senario我得到的对象,但它包括两个地址的值,“,”(逗号)分离。

回答

0

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

对于提供情况下,你需要正确设置字段名称:

user.address[0].city 
user.address[1].city 
user.address[2].city 
对剩余

和相同的。

0

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

您需要转换对象到您的返回类型(可能 串在你的情况下)的阵列。并得到值arr [0]和arr [1]。

+0

感谢您的回复。我不能在控制器中获得AddressEntity类的两个不同对象... –

+0

可以从jsp获取控制器中的两个或多个不同的地址对象吗? –

+0

是的,但他们应该被设置为jsp上的不同属性 –

0

您需要创建AddressDataBean,如下所示。

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

    // Getters and Setters for the properties; 
} 

And Address class如下。

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

    // Getters and setters for the fields. 
} 

在您的jsp中,您需要使用spring form taglib并绑定personalAddress字段和billingAddress字段。

例如。和

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

编辑

你可以在你的UserInfoEntity豆的personalAddress和billingAddress性能。我后来意识到它。 :)

希望这可以帮助你。

+0

感谢您的回复..让我试试这个.. –

+0

实际上可以有多个帐单地址给一个用户。以及我应该在jsp中写入以获取控制器中的地址值。 –

+0

可以从jsp中获取控制器中的两个或多个不同的地址对象。 –