使用与正在显示的属性不同的属性提交<s:radio>标签选择

时间:2015-07-14 18:57:53

标签: jsp struts2 ognl struts-tags

为了简单起见,我将方案定义为:class Person定义一个带有idint)和name({{1}的对象属性。我创建了一个String,它们通过各自的Action类方法(List<Person> persons)加载到JSP页面中,以填充getPersons()标记。到目前为止,这么好,JSP相应地填充了<s:radio>。我可以选择并向action类提交一个选项(在JSP&#39; s <s:radio>元素中定义)。我的问题是我只能在<form>中提交所选人员的名称,而我真正想要的是提交人员<s:radio>。我该怎么办?

实际示例:我在id列表中有2个人,John(ID = 1)和Peter(ID = 2)。我想在<s:radio>元素上显示他们的名字,但如果我选择Peter,我想将<s:radio>提交给动作类,而不是名称。

以下代码:

JSP

2

动作类(submitData动作)

<form action="submitData" class="ink-form all-100 small-100 tiny-100" method="post">
    <s:radio label="persons" name="personId" list="persons.{name}" />
</form>

1 个答案:

答案 0 :(得分:1)

在OGNL中,此persons.{name}称为投影,您在<s:radio>标记中并不需要它。使用listKeylistValue属性来定义列表中对象的哪个属性将被显示以及哪些属性已提交。

<s:radio label="persons" name="personId" list="persons" listKey="id" listValue="name" />

还有一件事。人idint,您正在尝试将其提交给personId,这是一个字符串。当然它会起作用,但考虑将personId更改为int。这样,以后当您想从数据库中检索Person对象时,您不需要将String转换回int