2015-04-02 78 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

相关问题