编译器尝试基于Java Bean构建自定义JSP标记时出现错误



我试图在jsp页面中使用自定义标记,但到目前为止我得到编译错误。下面是自定义jsp标记代码以及尝试使用它的jsp页面。

address.tag

<%-- 
Document   : address
Created on : Feb 21, 2012, 1:47:19 PM
Author     : skiabox
--%>
<%@tag description="Address Input Field" pageEncoding="UTF-8"%>
<jsp:useBean id="addressBean" scope="session" class="com.ensode.netbeansbook.AddressBean" />
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- The list of normal or fragment attributes can be specified here: --%>
<%@attribute name="addressType" required="true"%>
<%-- any content can be specified here e.g.: --%>
<table border="0">

<tr>
<td>Line 1:&nbsp;</td>
<td>
<input type="text" size="20" name="${addressType}_line1" id="${addressType}_line1" value="${addressBean.line1}" />
</td>
</tr>
<tr>
<td>Line 2:&nbsp;</td>
<td>
<input type="text" size="20" name="${addressType}_line2" id="${addressType}_line2" value="${addressBean.line2}" />
</td>
</tr>
<tr>
<td>City:&nbsp;</td>
<td>
<input type="text" size="20" name="${addressType}_city" id="${addressType}_city" value="${addressBean.city}" />
</td>
</tr>
<tr>
<td>State:&nbsp;</td>
<td>
<select name="${addressType}_state" id="${addressType}_state">
<option value=""></option>
<option value="AL"
<c:if test="${addressBean.state == 'AL'}">selected</c:if> >
Alabama
</option>
<option value="AK"
<c:if test="${addressBean.state == 'AK'}">selected</c:if> >
Alaska
</option>
<option value="AZ"
<c:if test="${addressBean.state == 'AZ'}">selected</c:if> >
Arizona
</option>
<option value="AR"
<c:if test="${addressBean.state == 'AR'}">selected</c:if> >
Arkansas
</option>
<option value="CA"
<c:if test="${addressBean.state == 'CA'}">selected</c:if> >
California
</option>
</select>
</td>
</tr>
<tr>
<td>Zip:&nbsp;</td>
<td>
<input type="text" name="${addressType}_zip" id="${addressType}_zip" value="${addressBean.zip}" />
</td>
</tr>
</table>

index6.jsp

<%-- 
Document   : index6
Created on : Feb 21, 2012, 3:25:43 PM
Author     : skiabox
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@taglib prefix="ct" tagdir="/WEB-INF/tags/" %>
<%@page import="com.ensode.netbeansbook.AddressBean" %>
<%
AddressBean addressBean = new AddressBean();
addressBean.setAddressType("home");
addressBean.setLine1("123 Tennis Ct");
addressBean.setCity("Phoenix");
addressBean.setState("AZ");
addressBean.setZip("85001");
session.setAttribute("addressBean", addressBean);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form>
<ct:address addressType="home"/>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td style="width: 65px;"></td>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</form>
</body>
</html>

AddressBean.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.ensode.netbeansbook;
/**
*
* @author skiabox
*/
public class AddressBean {
private String addressType;
private String line1;
private String line2;
private String city;
private String state;
private String zip;
public String getAddressType() {
return addressType;
}
public void setAddressType(String addressType) {
this.addressType = addressType;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getLine1() {
return line1;
}
public void setLine1(String line1) {
this.line1 = line1;
}
public String getLine2() {
return line2;
}
public void setLine2(String line2) {
this.line2 = line2;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
}

下面是Netbeans在编译自定义标签时给我的错误日志:

org.apache.jasper。JasperException: PWC6033: Javac编译错误对于JSP

PWC6197: jsp文件中第48行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:215:无法访问javax.servlet.jsp.jstl.core.ConditionalTagSupport类文件javax.servlet.jsp.jstl.core.ConditionalTagSupport未找到

PWC6197: jsp文件中第48行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:216:无法找到symbol symbol: methodsetPageContext(javax.servlet.jsp.PageContext)位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第48行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:217:无法找到symbol symbol: methodsetParent() location:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第48行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:219:无法找到symbol symbol: methoddoStartTag()位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:223:无法找到symbol symbol: method doAfterBody() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:228:无法找到符号symbol: method doEndTag() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:229:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6199:生成servlet错误:string:///address_tag.java:232:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6197: jsp文件中第52行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:241:无法找到symbol symbol: methodsetPageContext(javax.servlet.jsp.PageContext)位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第52行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:242:无法找到symbol symbol: methodsetParent() location:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第52行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:244:无法找到symbol symbol: methoddoStartTag()位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:248:无法找到symbol symbol: method doAfterBody() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:253:无法找到符号symbol: method doEndTag() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:254:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6199:生成servlet错误:string:///address_tag.java:257:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6197: jsp文件中第56行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:266:无法找到symbol symbol: methodsetPageContext(javax.servlet.jsp.PageContext)位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第56行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:267:无法找到symbol symbol: methodsetParent() location:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第56行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:269:无法找到symbol symbol: methoddoStartTag()位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:273:无法找到symbol symbol: method doAfterBody() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:278:无法找到符号symbol: method doEndTag() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:279:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6199:生成servlet错误:string:///address_tag.java:282:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6197: jsp文件第60行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:291:无法找到symbol symbol: methodsetPageContext(javax.servlet.jsp.PageContext)位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件第60行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:292:无法找到symbol symbol: methodsetParent() location:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件第60行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:294:无法找到symbol symbol: methoddoStartTag()位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:298:无法找到symbol symbol: method doAfterBody() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:303:无法找到符号symbol: method doEndTag() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:304:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6199:生成servlet错误:string:///address_tag.java:307:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6197: jsp文件中第64行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:316:无法找到symbol symbol: methodsetPageContext(javax.servlet.jsp.PageContext)位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第64行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:317:无法找到symbol symbol: methodsetParent() location:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6197: jsp文件中第64行出现错误:/web - inf/标签/地址。标签PWC6199:生成servlet错误:string:///address_tag.java:319:无法找到symbol symbol: methoddoStartTag()位置:类org.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:323:无法找到symbol symbol: method doAfterBody() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:328:无法找到符号symbol: method doEndTag() location: classorg.apache.taglibs.standard.tag.rt.core.IfTag

PWC6199:生成servlet错误:string:///address_tag.java:329:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

PWC6199:生成servlet错误:string:///address_tag.java:332:重用(javax.servlet.jsp.tagext.Tag)org.apache.jasper.runtime.TagHandlerPool不能应用(org.apache.taglibs.standard.tag.rt.core.IfTag)

/用户/skiabox/NetBeansProjects simplewebapp2/nbproject/build-impl.xml: 612:Java返回:1 BUILD FAILED (total time: 2秒)

可以看到,第一个错误发生在代码试图访问addressBean.state时关于如何解决这个问题或者我做错了什么,有什么想法吗?谢谢你。

我知道现在回答这个问题已经太晚了(三年多了)。我也遇到过这个问题。显然,解决方案是"清洁和构建项目"或按SHIFT+F11并再次运行项目。

最新更新