Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF-模板和ajax调用-最佳实践_Jsf_Jsf 2_Facelets - Fatal编程技术网

JSF-模板和ajax调用-最佳实践

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上加载新数据 问题是,当我调用它时,我丢

我将尝试用几行代码来解释我的dubt:

template.xhtml
-这里我加载一个名为get参数的页面(例如index.xhtml?page=homepage=>我加载homepage.xhtml)

ajax调用
——所以这才是真正的问题;如果我这样打电话:

<f:ajax event="action" execute="param1 param2" render=":content"/>
我将在模板上定义的panelGroup
content
上加载新数据

问题是,当我调用它时,我丢失了
页面参数
(前面在选择器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}" />