提交 <s:radio> 个标签选择,其属性与正在显示的标签不同
Submit <s:radio> tag selection with different attribute from the one being displayed
为了简单起见,我将场景定义为: class Person
定义一个对象,其中包含 id
(int
) 和 name
(String
) 属性。我创建了一个 List<Person> persons
,通过其各自的 Action class 方法 (getPersons()
) 加载到 JSP 页面,以填充 <s:radio>
标记。到目前为止,一切都很好,JSP 相应地填充了 <s:radio>
。我可以 select 并向操作 class 提交选项(在 JSP 的 <form>
元素中定义)。我的问题是我只能在 <s:radio>
中提交 selected Person 的 name,而我真正想要的是提交 Person 的 [=14] =].我该怎么做?
实际示例: 我在 <s:radio>
列表中有 2 个人,John(ID=1)和 Peter(ID=2)。我想在 <s:radio>
元素上显示他们的名字,但是如果我选择 Peter,我想将 2
提交给操作 class,而不是它的名字。
代码如下:
JSP
<form action="submitData" class="ink-form all-100 small-100 tiny-100" method="post">
<s:radio label="persons" name="personId" list="persons.{name}" />
</form>
操作class(提交数据操作)
public class SubmitData extends ActionSupport
{
private String personId;
public String execute()
{
System.out.println("Person ID: "+personId);
return SUCCESS;
}
public void setPersonId(String PersonId)
{
this.personId = personId;
}
}
在 OGNL 中,此 persons.{name}
称为投影,您在 <s:radio>
标签中并不需要它。使用 listKey
和 listValue
属性来定义将显示列表中的哪些 属性 对象以及提交哪些对象。
<s:radio label="persons" name="personId" list="persons" listKey="id" listValue="name" />
还有一件事。 Person id
是一个 int
,您正试图将其提交给 personId
,这是一个字符串。当然可以,但考虑将 personId
更改为 int
。这样,稍后当您想要从数据库中检索 Person
对象时,您不需要将 String 转换回 int
.
为了简单起见,我将场景定义为: class Person
定义一个对象,其中包含 id
(int
) 和 name
(String
) 属性。我创建了一个 List<Person> persons
,通过其各自的 Action class 方法 (getPersons()
) 加载到 JSP 页面,以填充 <s:radio>
标记。到目前为止,一切都很好,JSP 相应地填充了 <s:radio>
。我可以 select 并向操作 class 提交选项(在 JSP 的 <form>
元素中定义)。我的问题是我只能在 <s:radio>
中提交 selected Person 的 name,而我真正想要的是提交 Person 的 [=14] =].我该怎么做?
实际示例: 我在 <s:radio>
列表中有 2 个人,John(ID=1)和 Peter(ID=2)。我想在 <s:radio>
元素上显示他们的名字,但是如果我选择 Peter,我想将 2
提交给操作 class,而不是它的名字。
代码如下:
JSP
<form action="submitData" class="ink-form all-100 small-100 tiny-100" method="post">
<s:radio label="persons" name="personId" list="persons.{name}" />
</form>
操作class(提交数据操作)
public class SubmitData extends ActionSupport
{
private String personId;
public String execute()
{
System.out.println("Person ID: "+personId);
return SUCCESS;
}
public void setPersonId(String PersonId)
{
this.personId = personId;
}
}
在 OGNL 中,此 persons.{name}
称为投影,您在 <s:radio>
标签中并不需要它。使用 listKey
和 listValue
属性来定义将显示列表中的哪些 属性 对象以及提交哪些对象。
<s:radio label="persons" name="personId" list="persons" listKey="id" listValue="name" />
还有一件事。 Person id
是一个 int
,您正试图将其提交给 personId
,这是一个字符串。当然可以,但考虑将 personId
更改为 int
。这样,稍后当您想要从数据库中检索 Person
对象时,您不需要将 String 转换回 int
.