我将PrettyFaces与JSF 2以及<h:link>
和<f:param>
标签广泛地用于获取可加入书签的页面(最好忘记JSF应用程序中的所有POST请求)。使用JSF ajax请求刷新URL
但是,其中一些链接仅改变页面的一小部分(主要是当用户停留在同一视图中时),因此改为发送一个jax请求更好。但是,<f:ajax>
不能与<h:link>
一起使用,只能使用<h:commandlink>
。我可以通过一个命令链接以多种方式发送参数,但在这种情况下,请求后URL保持不变。因此它与页面内容不同步,并且不可刷新。
我见过使用链接发送GET和ajax请求混合的链接(指向一个新的url,同时用ajax修改页面),但到目前为止我还没有找到任何解决方案。
ajax请求完成后(或当用户点击)后,我可以用jsf刷新url吗?或者我必须使用一些外部JS库?
编辑:这里需要的JS库是新的JavaScript历史API。 More info. 我猜JSF目前不使用这个API。但是我仍然从JSF开发人员的角度对这个问题感兴趣。
此外,计划将来的JSF版本?结合<f:ajax>
与<h:link>
将是一个完美的解决方案。
我在几个月前就看过OmniFaces。这不幸并不便宜/不重要。完全相同的更改URL应该能够完全返回所需的JSF视图状态,包括所有ajax更改,这些更改由单个简单GET请求的回发执行。以应用程序范围(会话无关)的方式实现此目的的所有必要信息都使GET URL非常冗长。有很多方法可以缩短网址,但仍然...然后我没有考虑到组件库的细节。 – BalusC
谢谢你的回应。不过,我并不完全了解它。我认为应该由开发者负责设置一个URL,在刷新时给出完全相同的页面 - 视图应该处理请求属性等。实际上,我已经这样做了,因为''生成一个非ajax GET链接 - 我都希望发送一个ajax请求,并将URL设置为之前由''生成的URL。它可以是''或其他任何东西,重点是它应该像这样工作。 –
apcuk
如果目的是纯粹的页面到页面导航,那么它确实会更容易实现。但是''通常被用于许多其他更有用的东西,而不仅仅是导航。 *那部分不是微不足道的。 –
BalusC