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, });
}