그래서 <c:set>
을 사용하여 개체 값을 설정합니다. 문제는 동일한 이름을 가진 두 개의 setter 메소드가 있으며 잘못된 메소드가 호출된다는 것입니다. 우리는 ${paramValues.tag}
여기에 정의 된 문자열 배열 (http://docs.oracle.com/javaee/1.3/api/javax/servlet/ServletRequest.html#getParameterValues(java.lang.String)) 인 것을 알고, 이제JSTL c : 빈 속성을 배열로 설정하면 잘못된 설정 메서드가 호출됩니다.
<c:when test="${not empty paramValues.tag }">
<c:set target="${listing }" property="tags" value="${paramValues.tag }" />
</c:when>
: 내 JSP에서
나는이 있습니다. 내가 ${paramValues.tag}
를 출력하여이를 확인하고 난 다음 한 내 자바 클래스에서 foreach 루프 <c:forEach var="test" items="${paramValues.tag}">
를 사용하여 값을 반복 할 수 있었다있다 :
public void setTags(final String tagName) {
LOG.debug("Setting tags from single tag string");
this.setTags(Arrays.asList(tagName));
}
public void setTags(final String[] tagNames) {
LOG.debug("Settings tags from tag array");
this.setTags(Arrays.asList(tagNames));
}
내가보고하고 그 결과를 로그이다 "단일 태그 문자열에서 태그 설정"메시지가 호출되었습니다. 그래서 c : set은 setTags (String []) 메소드가 아닌 setTags (String) 메소드를 호출합니다. 전달되는 "tagName"매개 변수는 "[Ljava.lang.String; @ 73f9e088"
의 줄을 따라 이동하는 이유는 무엇입니까? 내가 뭐 잘못 했니?
입력 해 주셔서 감사합니다.
먼저 setter 메소드가 필요로 구현 될 수있다이 경우에, 나는 당신이 먼저 setter 메소드를 제거 할 수 있다고 생각합니다. 그들의 기능은 동일하지 않습니까? –