2012-02-15 43 views
0

我創造在Struts2
我創建了一個頁面Registration.jsp像下面的一個項目。Struts2的財產不確定性

<s:form name="registration" action="Registration" > 
<s:textfield name="user.userName" label="UserName"></s:textfield> 
<s:textfield name="user.userName" label="Password"></s:textfield> 
<s:textfield name="user.userName" label="Re-Enter Password"></s:textfield> 
<s:textfield name="user.userName" label="Name"></s:textfield> 
<s:textfield name="user.userName" label="DOB"/> 
<s:textfield name="user.userName" label="email"></s:textfield> 
<s:textfield name="user.userName" label="Portfolio Name"></s:textfield> 
<s:submit></s:submit> 
</s:form> 

就像上面說的,我想給的所有字段相同的名稱,它是在設定值時使用..
打電話時我想結果重定向到一個JSP,並試圖在行動後顯示,將顯示如用戶名下方

如果我們輸入A,b,C,d和e如在給定的字段分別參數。我得到的輸出正是(包括在輸出中)那樣 - 你好a,b,c,d,e ..

我不明白爲什麼會發生這種情況..有沒有人有想法?

回答

1

這是多麼客戶端服務器通信works.From HTML透視一切都會使用字符串的鍵值對被髮送到服務器。

值在Action類被設置和解釋爲收集/陣列是一個功能S2和它的轉換機構(OGNL和XWork的轉化率)。

所以當你的值被髮送爲一個鍵值爲user.userName=a,b,c,d,e的值,並且你已經在你的動作類中聲明瞭一個集合/數組,所以S2類型轉換機制開始行動並將這些值轉換爲Array/Collection並設置它們在你的行動課中受人尊敬的財產。

在相反的情況下,HTML將只知道字符串,並且從服務器再次將它們作爲鍵和值發送,並且因爲您並未要求您的S2機制進入播放狀態,所以這會按照每個HTML打印你的描述。

+0

Umesh製作感謝的答覆。現在我試圖存儲在列表中的這些值,但不會太大succeded嘗試後... – Abhij 2012-02-15 11:35:30

+0

@Abhishekj:你能告訴你如何試圖做到這一點的代碼? – 2012-02-15 11:36:34

+0

謝謝Umesh製作我已經經過了一些更多的努力做到了。 – Abhij 2012-02-15 12:06:28

0

當您提交此頁面,URL將看起來像?user.userName=a&user.userName=b&user.userName=c&user.userName=d&user.userName=e。 Struts2的認爲這是作爲一個CollectionArray。當你把這個值String類型的參數,該值是用逗號分開保存。稍後,這是在操作調用之後顯示在頁面中的內容。