一尘不染

如何解决jsp页面错误?

jsp

我在 java 文件中有字符串类型的方法,它包含字符串数组,当我尝试在 jsp中 调用时,它给我一个错误。

public String[] ordering(ActionRequest actionRequest,ActionResponse actionResponse)  
    throws IOException,PortletException

JSP:

<% 
  TestiPortlet obj=new TestiPortlet();
  String str[]=obj.ordering(actionRequest,actionResponse);
  out.println(str[0]);
%>

错误:

Multiple annotations found at this line:- actionResponse cannot be resolved to a     variabl-actionRequest cannot be resolved to a variable

    Stacktrace:
    javax.portlet.PortletException: org.apache.jasper.JasperException: An exception occurred processing JSP page /html/testi/list.jsp at line 8

    5: 
    6: <% 
    7:   TestiPortlet obj=new TestiPortlet();
    8:   String str[]=obj.ordering(actionRequest,actionResponse);
    9:   out.println(str[0]);
    10: %>
    11:

阅读 220

收藏
2020-06-10

共1个答案

一尘不染

错误说,这一切,你的JSP没有找到actionRequestactionResponse对象。

这些对象需要包含在JSP中,方法是将这些代码放在JSP的顶部:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>

<portlet:defineObjects />

正如@RasabihariKumar正确提到的那样,这不是使用Portlet类的方式。对于测试或学习,这可能很好,但是对于实际项目,我认为这不是一个好习惯,因为它们是昂贵的对象,并且使用Portlet作为Utility类来处理这样的数据似乎根本不正确。
,它破坏了凝聚力的原则。

就像我们对servlet所做的那样,应该使用Portlet类将请求发送(通过使用renderURLactionURLresourceURL)并获得响应。

您可以浏览liferay
Wiki,以获得指向学习资源的有用链接,我建议开发人员指南和书籍,Liferay in Action以及Portlet in Action在liferay中开发portlet的最佳方法。

目前,最简单的方法是在doViewportlet
JSP页面呈现时将在portlet的方法中编写代码,只需从您的数据库中检索列表doView并将其作为request属性放入:

renderRequest.setAttribute("listAttr", listFromDatabase)

然后listAttr在JSP中将其用作:

String[] str = (String[]) renderRequest.getAttribute("listAttr");

浏览liferay开发的样本portlet的源代码也可能会有所帮助。

2020-06-10