Java JSTLC:使用数组设置bean属性,调用了错误的setter方法

Java JSTLC:使用数组设置bean属性,调用了错误的setter方法,java,jsp,jstl,el,Java,Jsp,Jstl,El,因此,我使用来设置对象的值。问题是有两个同名的setter方法,调用了错误的方法 在我的JSP中,我有以下内容: <c:when test="${not empty paramValues.tag }"> <c:set target="${listing }" property="tags" value="${paramValues.tag }" /> </c:when> 我看到的结果是调用了日志消息“从单个标记字符串设置标记”。 所以c:set调用

因此,我使用
来设置对象的值。问题是有两个同名的setter方法,调用了错误的方法

在我的JSP中,我有以下内容:

<c:when test="${not empty paramValues.tag }">
    <c:set target="${listing }" property="tags" value="${paramValues.tag }" />
</c:when>
我看到的结果是调用了日志消息“从单个标记字符串设置标记”。 所以c:set调用的是setTags(String)方法,而不是setTags(String[])方法。 传递的“标记名”参数沿“[Ljava.lang.String;@73f9e088”行

为什么会这样?我做错什么了吗

感谢您的输入。

属性的概念是您有一个getter和setter,其中getter的返回类型与setter的参数类型相同

因此,在本例中,“属性检查器”可能推断属性标记名的类型为String而不是String[],还有一个带有字符串数组的setter这一事实并不重要

建议:引入一个接受字符串的setTag和一个接受字符串数组的setTags

注意,属性概念不需要属性:在这种情况下,setTag可以实现为

public void setTag(String tag) {
    setTags(new String[] { tag, });
}

是否需要第一个setter方法,我认为您可以删除第一个setter方法。它们的功能是相同的,不是吗?
public void setTag(String tag) {
    setTags(new String[] { tag, });
}