カスタムタグを作成しようとしています。このタグでは、オブジェクトを属性として渡し、配列リストを返す必要があります。私はそれを試しましたが、次のような例外が発生しています。
org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.String cannot be cast to com.showtable.helper.ParentNode
私のパラメーターは文字列としてクラスに送信され、オブジェクトを特定の型にキャストできないと思います。どうすればそれを解決してオブジェクト自体を渡し、クラスで型キャストできますか (文字列自体はクラスなので可能だと思いますが、その方法はわかりません) 私のコードを以下に示します。内側のページ
内部ページ
<%@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;
}
}