Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在基于Struts桥的portlet链接中设置WindowsState?_Java_Struts_Portlet_Portals Bridge - Fatal编程技术网

Java 如何在基于Struts桥的portlet链接中设置WindowsState?

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、

我正在使用struts portlet桥基于struts 1.2.9开发一个符合JSR-286的portlet(出于历史原因,我们希望重用大量现有代码)。我想要一些链接来更改WindowsState,但是门户桥提供的FormTag和LinkTag没有一个简单的方法来设置WindowsState。我很乐意扩展这两个标记,但不确定如何继续,如何确定需要以门户无关的方式添加哪些请求参数?

哦,好吧,不妨回答我自己的问题:-)

我必须基于(而不是扩展)struts桥代码创建我自己的TagsSupport、FormTag和LinkTag版本

我修改了方法TagsSupport.getUrl()和TagsSupport.getFormTagRenderFormStartElement()以接受WindowsState参数,并在创建渲染和操作URL时使用它

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()));