JSP로 실행되지 않는 사용자 정의 태그가 있습니다. 태그는 내 데이터베이스에서 쿼리를 실행하고 그 값을 JSP로 반환하기로되어 있지만 데이터베이스에 0이 아닌 값이 있다는 사실을 알게되면 내 페이지에 0이 생깁니다. 내가 디버그 모드에서 응용 프로그램을 실행하고 태그가 어떤 이유로 호출되지 않습니다,하지만 태그가 존재하더라도 어떤 이유로 NullPointerException을 받고있는 것 같습니다. 다음은 JSP의 관련 부분입니다. 이 부분은 쿠키가있는 경우에만 나타납니다.Spring 3 - JSP가 사용자 정의 태그를 실행하지 않음
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<td><myTag1:poll1 /> <c:choose>
<c:when test="${foundCookiePoll1 == true}">
<table>
<tr>
<td><b><i>Poll #1 -- </i></b>Would you like to have a
30-year reunion in 2016?<br></td>
</tr>
<tr>
<td><b>Yes</b></td>
<td> – <c:out value='${poll1Yes}' /><br /> </td>
</tr>
<tr>
<td><b>No</b></td>
<td> – <c:out value='${poll1No}' /><br /> </td>
</tr>
</table>
</c:when>
여기 내 태그입니다.
public void doTag(HttpServletRequest request)
throws JspException, IOException {
PageContext pageContext = (PageContext) getJspContext();
HttpSession session = request.getSession(true);
ServletContext servletContext = session.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(servletContext);
Poll1DAO poll1DAO = (Poll1DAO) wac.getBean("poll1DAO");
pageContext.setAttribute("foundCookiePoll1", cookieFound());
if (cookieFound()) {
HashMap<String, Object> poll1Votes = poll1DAO.getVotes();
pageContext.setAttribute("poll1Yes", (int) poll1Votes.get("yes"));
pageContext.setAttribute("poll1No", (int) poll1Votes.get("no"));
}
}
private boolean cookieFound() {
PageContext pageContext = (PageContext) getJspContext();
HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
Cookie[] cookies = request.getCookies();
if (cookies == null) {
return false;
}
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("poll1")) {
return true;
}
}
return false;
}
다음은이 태그에 대한 내 tld.xml입니다.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Poll1Tag</short-name>
<uri>poll1</uri>
<tag>
<name>poll1</name>
<tag-class>com.tags.Poll1Tag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
'$ poll1No}'는 오타가 있습니까? 아니면 당신이 정말로 오프닝'{'? –
오타입니다. 방금 원본 게시물에 고정 시켰습니다. 나는 그것을 놓쳤다는 것을 믿을 수 없다. 원래 코드에는 {이 (가) 있습니다. –
태그에 println을 넣고 다시 확인하십시오 (확실하게). JSP 태그 lib 지시문과 TLD xml도 게시하십시오. –