Java 仅在iframe中设置应用程序状态

Java 仅在iframe中设置应用程序状态,java,iframe,wicket,wicket-1.6,Java,Iframe,Wicket,Wicket 1.6,好的,我想做的是想出一种方法来应用某些应用程序设置(确切地说是CSS),但只能在iframed版本的应用程序中应用 如果您使用过Wordpress,我基本上是在尝试实现一个版本的theme live预览,它在iframe中打开一个版本的应用程序,只对该站点的实例进行主题更改。我认为它(Wordpress)是通过使用JavaScript来更改所有指向AJAX POST请求的链接,并将所选主题作为参数的一部分 我在想,通过添加页面参数(themePreview或类似的内容),可以执行类似的操作,检测

好的,我想做的是想出一种方法来应用某些应用程序设置(确切地说是CSS),但只能在iframed版本的应用程序中应用

如果您使用过Wordpress,我基本上是在尝试实现一个版本的theme live预览,它在iframe中打开一个版本的应用程序,只对该站点的实例进行主题更改。我认为它(Wordpress)是通过使用JavaScript来更改所有指向AJAX POST请求的链接,并将所选主题作为参数的一部分

我在想,通过添加页面参数(
themePreview
或类似的内容),可以执行类似的操作,检测并应用临时(会话)样式属性。我已经有了一个定制的
CssResourceReference
,它可以做到这一点,尽管没有页面参数检测,尽管这看起来很简单

我的主要问题是,我希望用户能够在iframe中浏览站点。要做到这一点,我需要维护、保留或以某种方式将
themePreview
page参数插入到所有已设置的页面请求中


有人知道如何实现这一点吗?或者,有更好的主意吗?

wicket中的链接通过调用请求周期的urlFor方法来工作。这包括一个URL呈现程序,所有URL在生成时都会通过该呈现程序传递

如果你:

  • urlenderer
    编写一个子类,将
    themePreview
    参数添加到所有URL(如果它是请求中的参数)
  • 编写一个子类
    RequestCycle
    并重写
    newurlenderer()
    以返回
    urlenderer
  • 创建自己的
    IRequestCycleProvider实现,以提供自定义
    RequestCycle
  • 在应用程序类中的
    init
    方法中,调用
    setRequestCycleProvider
    传递自定义
    IRequestCycleProvider

这样,如果请求中存在
themePreview
参数,它将自动添加到生成的任何URL中,因此将出现在iframe中的任何链接上。

这是否意味着您希望从会话中获取themePreview的值,以决定使用哪个CSS文件?@MartinStrejc否。我希望
themePreview
成为一个仅在网络中导航时才适用的标志iframed版本的网站。我认为
PageParameter
最合适。它不能存储在会话中,因为它将应用于iframe之外,而iframe不是我想要的,因此我在应用程序中使用所有页面的通用祖先(例如MyBasePage),当我需要通用功能时,它在这里实现非常简单,包括PageParameters之后的任何内容。我用的方法和你描述的一样。