[英]Struts2 sending list data from JSP to Action class: alternative way
我正在向一位同事解釋如何使用此處和此處解釋的索引從 JSP 頁面獲取列表數據返回到操作類。 他不太明白,自己摸索了一下,直到突然他完全不使用索引,讓它起作用了!
在他的 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">
在他的動作課上,他有“合適的”二傳手:
public List<String> getContactNameList()
public void setContactNameList(List<String> list)
我對為什么這項工作感到困惑。 我認為這是有效的,因為他發送的是非 bean 數據(在這種情況下是字符串),並且在 Struts2/OGNL 中有一個智能構建,可以將值附加到列表中而不是覆蓋它們。
任何人都可以詳細解釋在這種“無索引”情況下的幕后情況? 字符串列表是如何用上面的片段實例化和填充的?
您應該理解 bean 數據而不是 bean 數據作為參數傳遞給操作。 如果您實現ParameterAware
則參數具有您可以找到的結構。
請注意,將返回給定名稱的所有參數值,因此映射中的對象類型為
java.lang.String[]
。
然后 XWork Type Conversion 盡最大努力將此映射轉換為 bean 屬性。 請參閱內置類型轉換支持。
框架中的常規類型轉換是透明的。 通常,您需要做的就是確保 HTML 輸入具有可在 OGNL 表達式中使用的名稱。 (HTML 輸入是表單元素和其他 GET/POST 參數。)
在沒有索引的情況下,參數映射在一個鍵下,而不是在它們自己的名稱下使用索引名稱。
您必須在上面的代碼中設置索引值
喜歡
<input type="checkbox" name="contactNameList[0]" value="someValue1">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.