1. 页面显示
<%
String tabs1 = ParamUtil.getString(request, "tabs1", tabs1Default);
PortletURL tabs1URL = renderResponse.createRenderURL();
tabs1URL.setParameter("struts_action", "/calendar/view");
tabs1URL.setParameter("month", String.valueOf(selMonth));
tabs1URL.setParameter("day", String.valueOf(selDay));
tabs1URL.setParameter("year", String.valueOf(selYear));
%>
<liferay-ui:tabs
names="<%= "summary,day,week,month,year,events" %>"
url="<%= tabs1URL.toString() %>"
value="<%= tabs1 %>"
/>
a. names是tabs的名字列表。
b. url 点击tabs时的URL
c. selMonth, selDay, selYear表示在不同view切换下,当前选择的日期。
2. 后台实现类 TabsTag。
public class TabsTag{
public int doStartTag(){
request.setAttribute("liferay-ui:tabs:names", _names);
.......
include("/html/taglib/ui/tabs/start.jsp");
return EVAL_BODY_INCLUDE;
}
public void setNames(String names) {
_names = StringUtil.split(names);
}
private String[] _names;
}
a. 在执行自定义标签时,先会调用setXXX方法给属性赋值,setNames, setURL, setValue etc.
b. 再将属性值存入request对象中,以供后续页面显示用。
c. 在start.jsp中构造标签显示内容,需要的值从request中取,如b所说。