java - 从 webapp 更新 url 栏以表示当前状态

标签 java ajax url jsf jsf-2

我基本上想做 Jason 要求的事情 here

一句话,我希望 url 栏代表 AJAX 应用程序的状态,这样我就可以将其添加为书签,并允许用户使用后退/前进按钮返回到先前的状态浏览器。

对我来说(根据 Jason 的要求)不同之处在于我使用的是 JSF 2.0。 我读到 JSF 2.0 添加了使用 get 的能力,但我不确定使用它的正确方法是什么。

感谢您的帮助。

进一步说明

如果我理解正确,为了能够在 AJAX 网络应用程序中为特定状态添加书签,我将不得不使用 location.hash。我对么?从某种意义上说,我正在尝试实现类似 gmail 的行为,虽然应用程序已完成 AJAX 化并且没有发生重定向,但我仍然可以使用后退/前进和书签(这就是为什么我希望 URL 栏从更新AJAX 应用程序本身,而不是通过重定向)

更新

刚找到this类似问题

最佳答案

The difference for me (From what Jason asked) is that I am using JSF 2.0. I've read that JSF 2.0 added the ability to use get, but I am not sure what the correct way to use this.

请注意,这与维护 Ajax 状态不同。它通常由片段标识符(URL 中以 # 开头的部分,也称为 hashbang)发生。 JSF 不为此提供内置组件/功能。到目前为止,我还没有看到这样做的组件库。但是,您可能会发现 this answer对于开始使用 JSF 中的本地散列片段处理器非常有用。

关于使用 GET 请求,只需使用 <h:link> , <h:outputLink>甚至 <a>创建 GET 链接。您可以在 h: 中提供请求参数组件 <f:param> .例如

<h:link value="Edit product" outcome="product/edit">
    <f:param name="id" value="#{product.id}" />
</h:link>

product/edit.xhtml页面,您可以定义要设置的参数和根据 GET 请求执行的操作

<f:metadata>
    <f:viewParam name="id" value="#{productEditor.id}" />
    <f:event type="preRenderView" listener="#{productEditor.init}" />
</f:metadata>

在与 product/edit.xhtml 关联的请求或 View 范围 bean 中页 - 在这个例子中 #{productEditor} -,您只需定义属性和监听器方法。在模型中收集、转换、验证和更新所有属性后,将执行监听器方法。

private Long id;
private Product product;

public void init() {
    product = productService.find(id);
}

关于java - 从 webapp 更新 url 栏以表示当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894358/

相关文章:

python - 我如何确定给定网址中是否存在任何内容

java - 继续越界ArrayList

java - ConnectionTimeout 与 SocketTimeout

javascript - 液体 slider 和ajax

jquery - 在codeigniter中使用jquery ajax更新数据库

url - 如何使用 MongoDB/Node.js 创建友好的 URL?

python - 如何在每次创建页面时生成一定长度的随机 url?

递归中的 Java decToHex - 错误的输出顺序

java - 为 MySQL 命令行客户端加密连接生成 SSL key

javascript - ajax 调用/Angular 中的嵌套循环