JSF AJAX URL Param更新

时间:2012-06-13 17:39:28

标签: java ajax url jsf param

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

用户点击一项服务,网址更改为www.example.com?service=2,该服务的数据通过AJAX加载并显示在页面上。没有回发,只有部分页面刷新。我想避免完整的页面重新加载,因为只有数据表需要重新加载。

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

    目前我正在使用

    重定向整个页面
    FacesContext.getCurrentInstance().getExternalContext().redirect(url); 
    

    并尝试使用

    读取参数
    FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("service"); 
    

    然而,这真的不是我想要实现的,它重新加载了大量不必要的数据,它使得管理页面上的其他属性变得更加复杂!我想更新params并读取它们但只重新加载数据表。

1 个答案:

答案 0 :(得分:0)

我是JSf的新手,但我认为这会有所帮助,这是一个简单的例子:

假设您有一个<h:inputText>,其对象属性为值,如:

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

如果您需要使用ajax调用更新name属性:

<h:commandButton value="Update user" action="#{userBean.updateUserName}">
    <f:ajax render="formUser:userName" execute="formUser:userName" />
</h:commandButton>

render属性将使元素在页面上重新加载。执行将使元素设置值,在这种情况下,设置为name的{​​{1}}属性

这样,当您在UserBean上键入名称并单击inputText时,它将执行name的set方法并在视图上重新呈现输入,以便显示新值

但如果您需要commandButton,请参阅here中的示例:

link

这是你真正想要的吗?