我试图将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>
有没有办法让这成为可能?
答案 0 :(得分:2)
.{}
中的Clause.{clause}
在OGNL中称为投影,它会创建该对象的属性列表。这就是你在选项标签中获得所有值的原因。
通常你应该只在listValue
属性中添加属性名称,但在你的情况下,你需要从map值获取值,然后像value.property_of_object
<s:select list="Clause" listValue="value.clause" />