我正在使用Struts2。
<s:iterator value="empReportFields" var="empReportField"
<s:select name="%{#empReportField.fieldName}" list="%{#empReportField.listName}" listKey="id" listValue="name" cssClass="search" headerValue="All" headerKey="All" />
<s:property value="#empReportField.listName" />
// Here it is displaying proper list name
</s:iterator>
我从我的数据库中取出这些数据。现在我在选择框(<s:select list="<ListName>" />
)中显示特定列表,该列表存储在我的表(Database)列中。
通常它会像。
<s:select name="emp" list="locationList"
listKey="id" listValue="name"
headerValue="All" headerKey="All" />
它会运作良好。
但我发现简单的选择框没有列表值。那么实际问题是什么?
总之,我想动态调用列表。
s:select标签itslef有一个list属性,你可以在其中直接给出要填充下拉列表的列表名称(在操作类中)。您不需要使用迭代器将值打包到s:select下拉列表中。
试试这个:
<s:select label="Select from here"
headerKey="-1" headerValue="Select"
list="listNameHere"
name="feildNameHere" />
这里'listNameHere'是动作层中的列表,'feildNameHere'是动作类中的一个实例变量,它接收用户选择的值。
根据我如何理解您想要根据迭代器值动态加载<s:select list
的问题。
如果是这样,只需使用像<s:select list
这样的<s:select list="#empReportField.listName"
。
其中<s:iterator value="empReportFields"
是一个列表,在列表中列出另一个名为listName
的列表或地图。