s中的单个对象映射值:在Struts2中选择

时间:2014-11-14 18:47:26

标签: list select map struts2 ognl

我试图将Map<String, Object>放入下拉列表中,但我遇到了问题。发生的事情是列表是用我的对象生成的,下拉列表只显示指向对象的指针,如果代码是这样的话。

<s:select name="form.Clause" list="Clause" label="%{getText('Clause')}" requiredLabel="true" required="true" />

这将使用对象引用填充我的选择。虽然如果我这样做

<s:select name="form.Clause" list="Clause"  listValue="%{Clause.{clause}}" Value="%{Clause.{clause}}" label="%{getText('Clause')}" requiredLabel="true" required="true" />

这将使用正确的值填充列表,除了它在每个选择中打印列表中的所有内容。

<select name="form.Clause" id="frm_form_Clause" data-wet_aria_input="true" aria-describedby="frm_form_Clause_error" aria-required="true" Value="[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]" required="true">
<option value="1">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="2">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="3">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="4">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="5">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="6">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="7">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="8">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="9">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>
<option value="10">[(A), (B), (A), (B), (C), (A), (B), (A), (B), (A)]</option>

哪个更接近但仍然不正确,因为我正在寻找看起来像这样的选项。

<option value="1">(A)</option>
<option value="2">(B)</option>
<option value="3">(A)</option>
<option value="4">(B)</option>
<option value="5">(C)</option>
<option value="6">(A)</option>
<option value="7">(B)</option>
<option value="8">(A)</option>
<option value="9">(B)</option>
<option value="10">(A)</option>

有没有办法让这成为可能?

1 个答案:

答案 0 :(得分:2)

.{}中的Clause.{clause}在OGNL中称为投影,它会创建该对象的属性列表。这就是你在选项标签中获得所有值的原因。

通常你应该只在listValue属性中添加属性名称,但在你的情况下,你需要从map值获取值,然后像value.property_of_object

那样引用它
<s:select list="Clause" listValue="value.clause" />