问题:
我要在同一个portlet里面实现页面的跳转,并传递参数,该怎么做呢
比如说jsp文件为A.jsp和B.jsp,java文件为portlet.java,
我在A.jsp里面这样写:
PortletURI url=portletResponse.createURI();
url.addPatameter("index ", " "+index);(index为int型,即我要传递的参数)
<a href="<%=url%>">Go to B.jsp当我点击此链接后,portlet.java中的doview()被调用,而我怎样在doView()中获取这个index参数呢,然后做一些处理,转到B.jsp页面呢.
答:
portlet分响应动作和呈现两个阶段,最好不要在doview里处理逻辑。你可以<a href="<portletAPI:createURI><portletAPI:URIAction name='<%=actionString%>'/><portletAPI:URIParameter name= "index " value= "1 "/> </portletAPI:createURI> "> go to b.jsp </a> ,在portlet的actionPerformed函数里相应该请求,而doView()决定include哪个jsp。另外如果是弹出,可以用 <a href= " <%=response.encodeURL( "/jsp/html/b.jsp?index=1 ")%> " target= "_blank "> open b.jsp </a> 。
其中actionString是你自己定义的动作名称,例如 "com.directAction ",而第二种方式好像也可以直接转到b页面(去掉target,不过不推荐这样做),
public void actionPerformed(ActionEvent event) throws PortletException{
String actionString = event.getActionString();
PortletRequest request = event.getRequest();
if(actionString.equals(someaciton)){
//do something
}
}