2015-04-02 77 views
1

我在Struts 1表單上有一些單選按鈕。獲取Struts中選定的單選按鈕索引

<input type="radio" name="productId" value="31415" /> 
<input type="radio" name="productId" value="31416" /> 

然後在Action類中,我可以從窗體中獲取值就好了。例如,如果我選擇第一個單選按鈕,然後myForm.getProductId()返回31415.

問題是,有沒有一種方法在Struts 1中告訴哪個輸入字段是通過保持當前功能的索引來選擇的?

(在最壞的情況下我知道我可以創建一個包含選定的單選按鈕創建一個新的隱藏字段,並從JavaScript更新領域,但我想避免這種方式爲好。)

說明: 單選按鈕是基於集合創建的,但由於某種原因集合的元素有時沒有產品ID,因此如果有多個這樣的元素,那麼我無法確定選擇了哪個單選按鈕。但即使在這些情況下,我也想知道,以提高系統的容錯能力。 (我對集合中的元素沒有權力,它來自Web服務。)

+0

沒有。在99.9%的情況下,知道收音機在哪個位置是非常不相關的。這些productId單選按鈕的值來自哪裏?如果它是Java中的某種集合,那麼您可以很容易地找到索引。 – 2015-04-02 11:55:51

+0

什麼是選定的索引,你的意思是列表索引? – 2015-04-02 12:04:41

+0

@AnthonyGrist我在問題中加了一點解釋 – ytg 2015-04-02 12:32:20

回答

1

您可以使用索引屬性作爲輸入字段的索引名稱。

索引屬性,BeanUtils.populate() 使用請求參數的名稱,以確定正確的setter方法對ActionForm

使用索引的名字叫

<input type="radio" name="productId[0]" value="31415" /> 
<input type="radio" name="productId[1]" value="31416" /> 

定義索引屬性

private String[] productId; 

public String getProductId(int index) { 
    return productId[index]; 
} 
public void setProductId(int index, String productId) { 
    productId[index] = productId; 
} 
public String[] getProductId() { 
    return productId; 
} 
+0

我認爲這打破了當前的功能,但是......我怎麼知道哪個單選按鈕被選中了?字符串數組是否只在一個位置有值?像[null,null,「1」,null]?如果單選按鈕沒有設置值,我會在數組中獲得一個空字符串嗎? – ytg 2015-04-02 13:23:18

+1

您可以通過提供給setter方法的索引獲取值。 – 2015-04-02 15:22:37

+0

對不起,我必須拿回這個。事實證明,這打破了單選按鈕的功能。不具有相同的名稱,他們將開始充當獨立的單選按鈕組。 https://jsfiddle.net/qkv486nb/1/ – ytg 2015-04-08 06:55:44

相關問題