2013-03-08 190 views
1

我使用Struts创建数据库记录编辑表单。Struts 2选择标记默认值

<s:select id="status" name="newRecord.status" list="statusTypes" listKey="id" listValue="description" label="Status:" value="" /><br /> 

实施例列表:

Status' list: 
1 Open 
2 Closed 
3 Pending 

我想设置在状态字段的默认值作为含有字符串表示例如存储在record.status当前状态"Open"

如果我设置value="%{record.status}它不起作用,因为这不是任何列表键。有没有一种方法可以设置这个值,当我只有字符串表示法使用?

或者我应该重新设计record.status作为ID和String的对象吗?

+1

标记的值需要是_key_,它是关键部分而不是值部分。您可以使用javascript设置它,或者更好地使用“Map”并从您拥有的值中查找关键字。 – 2013-03-08 17:50:53

+0

@ bmorris591它是一张地图,列表是格式ID,描述。 – user1277546 2013-03-08 18:09:38

回答

1

你应该初始化newRecord.status的值应该是包含列表键值一个单独的属性。然后只需设置默认value="%{record.status}"。当我说这个属性时,我的意思是可以通过OGNL访问的bean属性。

+0

足够公平,我期望的。 – user1277546 2013-03-08 18:33:00

1

您需要使用散列而不是列表。注意

listKey="id" listValue="description" 

然后你可以设置的值=关键

+0

你能举个例子吗?从我的记录中,我只有一个字符串状态(例如“打开”),这是我需要设置的值...所以我需要一些获取相关密钥的方法。 – user1277546 2013-03-08 18:06:26

+0

您需要更改记录,以便您拥有一个键值对,而不仅仅是一个值。只要给你的清单中的每个项目一个关键,并将其存储在散列表 – 2013-03-08 18:25:19