4

我是 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

从谷歌搜索我看到 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 标头标签,如此处所建议

不幸的是,问题仍然存在。

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

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

所以问题如下:

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

干杯!

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

4

5 回答 5

5

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

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

请参阅http://community.jboss.org/wiki/CommonAjaxRequestsProblems#navigation

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

希望这有助于解释事情。

于 2010-04-21T09:56:41.390 回答
2

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

于 2009-12-31T13:24:38.863 回答
2

这是一个部分答案,这意味着它显示了如何解决该问题,但没有解释它首先发生的原因。

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

  • a4j:命令按钮
  • a4j:commandLink
  • h:命令按钮
  • h:commandLink
  • a4j:htmlCommandLink

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

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

于 2010-01-05T09:36:42.443 回答
0

你可以这样试试:

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

祝你好运!:)

于 2010-04-21T08:21:26.220 回答
0

有同样的问题,网址没有在导航上更新。

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

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

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

于 2010-12-21T20:16:48.770 回答