我正在尝试制作自定义标签。在这个标签中,我将传递一个对象作为属性,它应该返回一个数组列表。我已经尝试过了,但我遇到了一个例外。
org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.String cannot be cast to com.showtable.helper.ParentNode
我认为我的参数是作为 String 发送到类的,并且它无法将对象转换为给定类型。我该如何解决它并传递对象本身并在类中对其进行类型转换(因为 String 本身是一个类,我认为它可能,但我不知道该怎么做)我的代码如下所示。内页
内页
<%@taglib prefix="test" uri="/WEB-INF/tlds/ShowTableCustomTag.tld"%>
<%
//the 'theMainObject' is of type ParentNode
request.setAttribute("mainobject", theMainObject);
%>
<test:getorder objectpara="mainobject"></test:getorder>
ShowTableCustomTag.tld 内部
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
<tlib-version>1.0</tlib-version>
<short-name>showtablecustomtag</short-name>
<uri>/WEB-INF/tlds/ShowTableCustomTag</uri>
<tag>
<name>getorder</name>
<tagclass>cc.showtable.customtag.ParentNodeOrder</tagclass>
<info>tag to return order as arraylist</info>
<attribute>
<name>objectpara</name>
<required>true</required>
</attribute>
</tag>
</taglib>
在 ParentNodeOrder 类内部
package cc.showtable.customtag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import com.showtable.helper.ParentNode;
public class ParentNodeOrder extends TagSupport{
private Object objectpara;
@Override
public int doStartTag() throws JspException {
try {
//Get the writer object for output.
JspWriter out = pageContext.getOut();
ParentNode parent=(ParentNode)objectpara;
out.println(parent.getOrder());
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
public Object getObjectpara() {
return objectpara;
}
public void setObjectpara(Object objectpara) {
this.objectpara = objectpara;
}
}