为了简单起见,我将方案定义为:class Person
定义一个带有id
(int
)和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>
答案 0 :(得分:1)
在OGNL中,此persons.{name}
称为投影,您在<s:radio>
标记中并不需要它。使用listKey
和listValue
属性来定义列表中对象的哪个属性将被显示以及哪些属性已提交。
<s:radio label="persons" name="personId" list="persons" listKey="id" listValue="name" />
还有一件事。人id
是int
,您正在尝试将其提交给personId
,这是一个字符串。当然它会起作用,但考虑将personId
更改为int
。这样,以后当您想从数据库中检索Person
对象时,您不需要将String转换回int
。