我是 JSF 的新手,我的简单 JSF 应用程序有问题。我在 WebLogic 10.3.2 (11g) 上使用 Facelets 和 Richfaces。该应用程序本质上是 3 页:
A <--> B <--> C
其中中间箭头表示导航规则。通过进行导航a4j:commandButtons 问题出在 Firefox 3.5 中,当我从 B 单击到 C 时,我得到一个从 开始的 url。 wyciwig:// .更详细地说,起始网址是:
http://localhost:7001/myapp/index.faces
当我从 B 导航到 C 时,我得到的 url 是这样的:
wyciwyg://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. 我添加了一个 PhaseListener 来添加 HTML header 标签,如建议的 here .
不幸的是,问题仍然存在。
另一件可能相关的事情是,由于某种原因,我的导航不会更改出现在浏览器地址栏中的 url。当我将鼠标悬停在 a4j:commandButtons 上时出现在状态栏中的链接总是
http://localhost:7001/myapp/index.faces#
所以问题如下:
干杯!
更新 1:这些家伙here (葡萄牙语文本)说用 a4j:htmlCommandLink 替换所有 a4j:commandLink 可以解决问题。我做到了,他们是对的。我不明白原因,通过。
最佳答案
实际上答案相当简单,并在 RichFaces 常见问题解答中进行了解释,我建议您仔细阅读!
ajax 组件不是为页面导航而设计的,以这种方式使用时将无法工作。
见 http://community.jboss.org/wiki/CommonAjaxRequestsProblems#navigation
a4j:htmlCommandLink 工作的原因是它不是真正的 ajax 组件,而是一个普通的旧 HTML 链接标签。
希望这有助于解释事情。
关于FireFox 3.5 缓存的 JSF 问题,wyciwyg ://prefix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1984801/