我向同事解釋瞭如何通過使用索引獲取列表數據從JSP頁面返回到操作類的方式,如here和here所解釋的。他自己並不完全理解和摸索,直到他突然通過不使用索引完成工作!Struts2從JSP向Action類發送列表數據:替代方式
他在JSP頁面中他有:
<input type="checkbox" name="contactNameList" value="someValue1">
<input type="checkbox" name="contactNameList" value="someValue2">
<input type="checkbox" name="contactNameList" value="someValue3">
<input type="checkbox" name="contactNameList" value="someValue4">
在他的動作類,他有 'appropiate' 制定者:
public List<String> getContactNameList()
public void setContactNameList(List<String> list)
我百思不得其解,爲什麼這項工作。我認爲這有效,因爲他發送非bean數據(在這種情況下字符串),並有一個智能構建到Struts2/OGNL追加值列表,而不是覆蓋它們。
任何人都可以非常詳細地解釋這個「無指數」情況下背後隱藏的是什麼?字符串列表是如何實例化的並使用上面的代碼片段進行填充?
那麼爲什麼它不應該工作?如果你有一個列表,你總是可以調用'add'方法來向列表中添加一個元素,但是如果你需要改變/更新列表中的特定元素(在某個索引處)呢?你將如何引用該元素? – 2014-09-05 18:04:57
在動作類中,結果是一個字符串列表。我們不需要專門引用任何字符串,只是遍歷整個集合。無論如何,我很好奇java代碼中發生了什麼。何時以及如何調用add方法? struts2如何知道它不應該每次都用新的空白列表覆蓋列表?當使用索引時,這很清楚,但沒有我沒有看到它。 – user1884155 2014-09-05 18:21:05
你是什麼意思?每次你打電話時都會重新創建**。有索引或沒有它並不重要。 – 2014-09-05 18:24:37