我有一个场景,我有一个能够显示数据表的页面。用户选择数据表数据但是必须能够提供直接URL以将特定数据加载到表中。为了实现这一点,我在URI中使用params来确定应该加载的服务(www.example.com?service=1)。
用户点击一项服务,网址更改为www.example.com?service=2,该服务的数据通过AJAX加载并显示在页面上。没有回发,只有部分页面刷新。我想避免完整的页面重新加载,因为只有数据表需要重新加载。
更新
目前我正在使用
重定向整个页面FacesContext.getCurrentInstance().getExternalContext().redirect(url);
并尝试使用
读取参数FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("service");
然而,这真的不是我想要实现的,它重新加载了大量不必要的数据,它使得管理页面上的其他属性变得更加复杂!我想更新params并读取它们但只重新加载数据表。
答案 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
这是你真正想要的吗?