【问题标题】:JSF problem with FireFox 3.5 caching, wyciwyg:// prefixFireFox 3.5 缓存的 JSF 问题,wyciwyg:// 前缀
【发布时间】:2009-12-31 10:15:11
【问题描述】:

我是 JSF 新手,我的简单 JSF 应用程序有问题。我在 WebLogic 10.3.2 (11g) 上使用 Facelets 和 Richfaces。该应用程序基本上是 3 页:

A B C

中间箭头表示导航规则。导航是通过 a4j:commandButtons 执行的。问题出在 Firefox 3.5 中,当我从 B 点到 C 点时,我得到一个从 wyciwig:// 开始的 url。更详细地说,起始网址是:

http://localhost:7001/myapp/index.faces

当我从 B 导航到 C 时得到的 url 是这样的:

所见即所得://20/http://localhost:7001/myapp/index.faces

通过 Google 搜索,我看到 wyciwig 是 WhatYouCacheIsWhatYouGet,因此问题可能与缓存有关。在这个方向上,我做了两件事:

A.我添加了以下元标记:

<meta http-equiv="Pragma" content="No-cache"/>
<meta http-equiv="Cache-Control" content="no-store,No-cache,must-revalidate,post-check=0,pre-check=0,max-age=0"/>
<meta http-equiv="Expires" content="-1"/>

B.按照here的建议,我添加了一个 PhaseListener 来添加 HTML 标头标签。

很遗憾,问题仍然存在。

可能相关的另一件事是,由于某种原因,我的导航不会更改浏览器地址栏中显示的 url。当我将鼠标悬停在 a4j:commandButtons 上时,状态栏中出现的链接始终是

http://localhost:7001/myapp/index.faces#

所以问题如下:

  1. 为什么会出现这个 wyciwyg://20/ 前缀,我该如何克服?
  2. 从一个页面导航到另一个页面时,如何更改 url?这会使“后退按钮起作用”吗?

干杯!

更新 1: 这些家伙 here(葡萄牙语文本)说用 a4j:htmlCommandLink 替换所有 a4j:commandLink 可以解决问题。我做到了,他们是对的。我不明白原因,通过。

【问题讨论】:

    标签: jsf caching navigation richfaces facelets


    【解决方案1】:

    其实答案相当简单,并在 RichFaces 常见问题解答中进行了解释,我建议您仔细阅读!

    ajax 组件不是为页面导航而设计的,这样使用时将无法工作。

    http://community.jboss.org/wiki/CommonAjaxRequestsProblems#navigation

    a4j:htmlCommandLink 起作用的原因是它不是真正的 ajax 组件,而是一个普通的旧 HTML 链接标记。

    希望这有助于解释事情。

    【讨论】:

      【解决方案2】:

      这更像是一个 Firefox 问题而不是 JSF 问题。实际上,您应该永远不会在地址栏中看到这些链接。可能您的 Firefox 环境或其插件之一搞砸了。试试this troubleshooting guide。如果无效,请卸载所有内容并重新安装 Firefox 干净。您最终还可以在物理上使用 Firefox 的另一台机器上进行测试,看看它是否真的是由 Firefox 或您的 web 应用程序引起的。

      【讨论】:

      • 感谢您的回复!我还从其他计算机上的其他 Firefox 安装中检查了它,我也遇到了同样的问题。不管是不是火狐的问题,我都必须不依赖用户重新安装或卸载插件才能找到解决方案。
      【解决方案3】:

      这是一个部分答案,意味着它展示了如何解决问题,但没有解释为什么会首先发生。

      为了弄清是哪些组件导致了这个问题,我把每个按钮换成了 5 个组件:

      • a4j:commandButton
      • a4j:commandLink
      • h:commandButton
      • h:commandLink
      • a4j:htmlCommandLink

      每个组件都有相同的动作。不工作的是前两个(a4j:commandButton,a4j:commandLink)。其他没有任何问题。因此,为了避免这种情况,请使用 h:commandButton、h:commandLink、a4j:htmlCommandLink 中的任何一个。

      关于 URL 显示不正确,这似乎是 JSF 1.2 的一个已知问题(可能在 2.0 中解决),如 herehere 所述。使用 Seam、PrettyFaces 或其他框架/库可以解决此问题。

      【讨论】:

      • 如果出现更好的答案,我将取消选中另一个。
      • 确实出现了更好的答案。而是选择那个。
      【解决方案4】:

      你可以试试这个方法:

      1. 打开 Mozilla
      2. 在地址栏中输入:about:config
      3. 设置browser.cache.memory.enable = FALSE
      4. 重启浏览器
      5. 加载您的页面并尝试!

      祝你好运! :)

      【讨论】:

        【解决方案5】:

        遇到同样的问题,导航时 url 没有更新。

        在 faces-config.xml 中的每个导航规则中添加了一个重定向标签解决了我的问题。

        在以下网址找到解决方案:

        http://www.java-samples.com/showtutorial.php?tutorialid=603

        【讨论】:

          猜你喜欢
          • 2011-03-09
          • 2012-10-07
          • 2010-11-09
          • 1970-01-01
          • 2023-03-10
          • 2021-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多