JSP无法访问继承的方法吗?

时间:2013-07-30 10:06:29

标签: java jsp inheritance polymorphism portlet

我在一段代码中找到了一个找不到异常的方法,这里简化了。

public class myOverriddenPortlet {
//usual doView, etc.
protected void myPrintMethod (
    javax.portlet.PortletRequest req, 
    javax.portlet.PortletResponse res, 
    javax.servlet.jsp.JspWriter out
) {
    //dostuff
   }
}

public class myPortlet extends myOverriddenPortlet {
    //usual portlet stuff
}

在jsp中

<%myPrintMethod(request, response, out); %>

3 个答案:

答案 0 :(得分:1)

受保护的方法只能在类,同一个包中的类或子类中调用。您编译的JSP不是这些。

请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 1 :(得分:1)

  

JSP不能访问继承的方法吗?

如果您正在讨论其他类中的JSP inherting,那么JSP不能继承其他类。您的 JSP 将被编译为 Servlet ,而后者将扩展某些JspBase的实现类,因此无法扩展其他类。

答案 2 :(得分:0)

您的方法需要:

protected void myPrintMethod (
    javax.portlet.PortletRequest req, 
    javax.portlet.PortletResponse res, 
    javax.servlet.jsp.JspWriter out
) 

但是你提供

request - I guess its an object of HttpRequest
response- I guess its an object of HttpResponse

因此,请尝试让您的方法接受这些类型或泛型类型