Jakarta ee Struts2:无法为struts select标记设置多个默认选择

Jakarta ee Struts2:无法为struts select标记设置多个默认选择,jakarta-ee,struts2,Jakarta Ee,Struts2,这里的carTypes是类型Car的列表,包含属性carTypeId(long)和name(String) cartypeid是一个字符串数组,其中包含默认情况下要选择的cartypeid。为什么它不起作用?当我这样做的时候 <s:select name="carTypeIds" list="carTypes" listKey="carTypeId" id="selectTypes" key="ca

这里的carTypes是类型Car的列表,包含属性carTypeId(long)name(String)

cartypeid是一个字符串数组,其中包含默认情况下要选择的cartypeid。为什么它不起作用?当我这样做的时候

<s:select  name="carTypeIds"
           list="carTypes"
           listKey="carTypeId" 
           id="selectTypes"
           key="carTypeId" size="4"
           listValue="name"
           headerKey=""
           headerValue="All"
           multiple="true"
           value="%{carTypeIds}"
           label="Car Types"
/>

我可以打印cartypeid。
对于struts来说,任何帮助都是值得的。

您的代码似乎很好,除了
属性:它用于一次性预设
名称
标签
属性,所有属性都具有相同的值。由于您需要不同的值并且已经预设了它们,请删除
属性。发件人:

:设置此特定组件的键(名称、值、标签)

还要确保您的
cartypeid
包含与密钥相同类型的对象,否则对等项可能会失败(例如
Long
vs
int
):

多个:创建多个选择。如果通过value属性将值作为数组或集合(适当类型)传递,则标记将预先选择多个值。如果其中一个键等于集合或数组中的一个值,则将选中该键


注意,
headerKey
不应为空…

还要确保您拥有所有需要的getter和setter…;)已删除密钥属性,仍不工作!是因为carTypeId(value)是字符串数组,而carTypeId(listKey)是长的吗?@Abhijeet:是的,是因为类型不匹配。将您的
carTypeIds(value)
更改为long-s的集合,它应该可以工作。@Abhijeet是的,正如我在回答中所写:确保它们的类型相同是的,它可以将类型更改为long。谢谢你超人:):)!!
<s:property value="%{carTypeIds}" />