JSF-模板和ajax调用-最佳实践
我将尝试用几行代码来解释我的dubt:JSF-模板和ajax调用-最佳实践,jsf,jsf-2,facelets,Jsf,Jsf 2,Facelets,我将尝试用几行代码来解释我的dubt: template.xhtml-这里我加载一个名为get参数的页面(例如index.xhtml?page=homepage=>我加载homepage.xhtml) ajax调用——所以这才是真正的问题;如果我这样打电话: <f:ajax event="action" execute="param1 param2" render=":content"/> 我将在模板上定义的panelGroupcontent上加载新数据 问题是,当我调用它时,我丢
template.xhtml
-这里我加载一个名为get参数的页面(例如index.xhtml?page=homepage=>我加载homepage.xhtml)
ajax调用
——所以这才是真正的问题;如果我这样打电话:
<f:ajax event="action" execute="param1 param2" render=":content"/>
我将在模板上定义的panelGroupcontent
上加载新数据
问题是,当我调用它时,我丢失了页面参数
(前面在选择器bean上设置),并且无法重新加载当前页面
因此,你的窍门是:
1-把豆子放在桌面上
2-通过ajax调用获取值
3-以其他方式定义我自己的应用程序
任何建议都将不胜感激:)以相同的形式将其作为隐藏输入值传递给下一个请求
<h:inputHidden value="#{selector.page}" />
嗯,是的。事实上,这对我来说听起来很奇怪,因为在“execute”中,我只想传递几个参数,而不是整个表单(正如我们昨天讨论的那样)。我必须在这个框架上理解这一点:)现在就这样尝试,不幸的是没有加载那个内容。我想我需要(首先)在选择器Bean上设置一个默认值。注意更新的代码:当我在模板上调用#{selector.page}时,它不会得到“index”。不知道为什么…哦,不,是的,它起作用了。我只需要将其称为“page”:)无论如何,我仍然可以为bean设置默认值。感谢BalusC提供的提示,看起来您是JSF的大师:)添加了实际的Bean。它不会将“homepage”作为默认值(如果get上没有page=value参数)。使用if(page==null | | | page.trim().isEmpty())
而不是与空字符串进行比较。
<f:ajax event="action" execute="param1 param2" render=":content"/>
package model;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="selector")
@RequestScoped
public class Selector {
@ManagedProperty(value="#{param.page}")
private String page;
public String getPage() {
if(page.compareTo("")==0) {
this.page="homepage";
}
return page;
}
public void setPage(String page) {
this.page=page;
}
}
<h:inputHidden value="#{selector.page}" />