Java 如何在基于Struts桥的portlet链接中设置WindowsState?
我正在使用struts portlet桥基于struts 1.2.9开发一个符合JSR-286的portlet(出于历史原因,我们希望重用大量现有代码)。我想要一些链接来更改WindowsState,但是门户桥提供的FormTag和LinkTag没有一个简单的方法来设置WindowsState。我很乐意扩展这两个标记,但不确定如何继续,如何确定需要以门户无关的方式添加哪些请求参数?哦,好吧,不妨回答我自己的问题:-) 我必须基于(而不是扩展)struts桥代码创建我自己的TagsSupport、FormTag和LinkTag版本 我修改了方法TagsSupport.getUrl()和TagsSupport.getFormTagRenderFormStartElement()以接受WindowsState参数,并在创建渲染和操作URL时使用它Java 如何在基于Struts桥的portlet链接中设置WindowsState?,java,struts,portlet,portals-bridge,Java,Struts,Portlet,Portals Bridge,我正在使用struts portlet桥基于struts 1.2.9开发一个符合JSR-286的portlet(出于历史原因,我们希望重用大量现有代码)。我想要一些链接来更改WindowsState,但是门户桥提供的FormTag和LinkTag没有一个简单的方法来设置WindowsState。我很乐意扩展这两个标记,但不确定如何继续,如何确定需要以门户无关的方式添加哪些请求参数?哦,好吧,不妨回答我自己的问题:-) 我必须基于(而不是扩展)struts桥代码创建我自己的TagsSupport、
public static String getURL(PageContext pageContext, String url, PortletURLTypes.URLType type, WindowState ws)
...
if ( type.equals(PortletURLTypes.URLType.ACTION) )
{
final PortletURL portletURL = StrutsPortletURL.createActionURL(pageContext.getRequest(), url);
if (ws!=null) {
try {
portletURL.setWindowState(ws);
}
catch (WindowStateException e) {
e.printStackTrace();
}
}
return portletURL.toString();
}
else if ( type.equals(PortletURLTypes.URLType.RENDER) )
{
final PortletURL portletURL = StrutsPortletURL.createRenderURL(pageContext.getRequest(), url);
if (ws!=null) {
try {
portletURL.setWindowState(ws);
}
catch (WindowStateException e) {
e.printStackTrace();
}
}
return portletURL.toString();
}
...
及
然后我更改了FormTag和LinkTag以接受WindowsState属性,并将其传递给TagsSupport中的方法
private String windowState;
public String getWindowState() {
return windowState;
}
public void setWindowState(String windowState) {
this.windowState = windowState;
}
及
显然,然后需要一个tld来引用我修改过的标签
这是作为一个补丁提供给struts桥项目的(还包含了一个更改portlet模式的补丁)
private String windowState;
public String getWindowState() {
return windowState;
}
public void setWindowState(String windowState) {
this.windowState = windowState;
}
url = TagsSupport.getURL(pageContext, url, urlType, new WindowState(getWindowState()));