Java JSF AJAX URL参数更新

Java JSF AJAX URL参数更新,java,ajax,url,jsf,param,Java,Ajax,Url,Jsf,Param,我有一个场景,其中我有一个能够显示datatable的页面。datatable数据由用户选择,但必须能够提供直接URL将特定数据加载到表中。为了实现这一点,我在URI中使用参数来确定应该加载的服务(www.example.com?service=1) 用户单击一个服务,URL变为www.example.com?service=2,来自该服务的数据通过AJAX加载并显示在页面上。没有回发,只有部分页面刷新。我希望避免完全重新加载页面,因为只有datatable需要重新加载 在不重新加载页面的情况下

我有一个场景,其中我有一个能够显示datatable的页面。datatable数据由用户选择,但必须能够提供直接URL将特定数据加载到表中。为了实现这一点,我在URI中使用参数来确定应该加载的服务(www.example.com?service=1)

用户单击一个服务,URL变为www.example.com?service=2,来自该服务的数据通过AJAX加载并显示在页面上。没有回发,只有部分页面刷新。我希望避免完全重新加载页面,因为只有datatable需要重新加载

  • 在不重新加载页面的情况下,如何从支持bean(即从www.example.com?service=1到www.example.com?service=2)更新URL参数
  • 在不重新提交页面的情况下,我如何阅读新的URL参数 更新

    目前,我正在重定向整个页面与

    FacesContext.getCurrentInstance().getExternalContext().redirect(url); 
    
    并尝试使用

    FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("service"); 
    

    然而,这并不是我想要达到的目的,因为它会重新加载大量不必要的数据,并且会使管理页面上的其他属性变得更加复杂!我想更新参数并读取它们,但只重新加载数据表。

    我对JSf不熟悉,但我认为这会有所帮助,这是一个简单的示例:

    假设您有一个
    ,对象属性作为值,如:

    <h:form id="formUser">
        <h:inputText value="#{userBean.name}" id="userName" />
    </h:form>
    

    这就是你真正想要的吗?

    @Daniel我更新了帖子。谢谢Daniel,这不是我想要的。一般来说,使用ajax执行部分页面重新加载不会有问题。我的问题是执行ajaxurl参数更新,然后执行ajaxurl参数读取。因此,我想通过ajax将URL从www.example.com?service=1更改为www.example.com?service=2,而无需重新加载页面。
    <h:commandButton value="Update user" action="#{userBean.updateUserName}">
        <f:ajax render="formUser:userName" execute="formUser:userName" />
    </h:commandButton>
    
    <h:link value="Login page + Param " outcome="login" >
        <f:param name="username" value="mkyong" />
    </h:link>