相关疑难解决方法(0)

"绑定"属性如何在JSF中起作用?应该何时以及如何使用?

在JSF中有很多材料区分value属性和binding属性.

我对这两种方法如何彼此不同感兴趣.鉴于:

public class User {
    private String name;
    private UICommand link;

    // Getters and setters omitted.
}
Run Code Online (Sandbox Code Playgroud)
<h:form>
    <h:commandLink binding="#{user.link}" value="#{user.name}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

value指定属性时会发生什么变化.getter运行以返回bean 的name属性值User.该值将打印到HTML输出.

但我无法理解它是如何binding运作的.生成的HTML如何维护与bean link属性的绑定User

下面是手动美化和注释后生成的输出的相关部分(注意id j_id_jsp_1847466274_1是自动生成的,并且有两个隐藏的输入小部件).我正在使用Sun的JSF RI 1.2版.

<form action="/TestJSF/main.jsf" enctype="application/x-www-form-urlencoded"
    id="j_id_jsp_1847466274_1" method="post"  name="j_id_jsp_1847466274_1">
    <input name="j_id_jsp_1847466274_1" type="hidden" value="j_id_jsp_1847466274_1">
    <a href="#" onclick="...">Name</a>
    <input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState"
        type="hidden" value="-908991273579182886:-7278326187282654551">
</form>
Run Code Online (Sandbox Code Playgroud)

在哪里binding存放在这里?

jsf binding components jsf-2

74
推荐指数
1
解决办法
10万
查看次数

什么是JSF中的组件绑定?何时优先使用?

binding在以下问题中阅读了有关属性的组件绑定:

据我所知,它将视图中JSF标记后面的UI组件绑定到UIComponent辅助bean中的属性.但是,我很困惑组件绑定的用途以及何时应该使用它.有人可以用更简单的方式解释它并给出一些实际的例子吗?

jsf binding components

23
推荐指数
1
解决办法
4万
查看次数

绑定属性导致在视图中找到重复的组件ID

这是JSF代码:

<h:inputText binding="#{bean.input}" />
Run Code Online (Sandbox Code Playgroud)

这里是支持bean的一部分用于绑定支持:

private HtmlInputText input;

public void setInput(HtmlInputText input) {
    this.input = input;
}

public HtmlInputText getInput() {
    return this.input;
}
Run Code Online (Sandbox Code Playgroud)

当我第一次打开页面时一切正常但是当我第二次打开它时(刷新或在另一个选项卡中打开相同的URL或任何其他方式)我得到重复的ID错误.错误消息表明<h:inputText>没有唯一ID.以下是长错误消息的一部分:

java.lang.IllegalArgumentException: Component ID formId:inputId has already been found in the view
    +id: inputId type: javax.faces.component.html.HtmlInputText@cafebabe
Run Code Online (Sandbox Code Playgroud)

添加binding属性后出现问题.如果我删除它,一切都会再次正常工作.我如何正确使用binding属性?

jsf binding components duplicates

13
推荐指数
1
解决办法
2万
查看次数

以编程方式在bean的构造函数中获取JSF视图的UIComponents

想象一个JSF页关于若干组件,如<h:selectOneMenu>,<h:dataTable>,<h:panelGrid>等.每个部件都有一个ID.是否有任何方法或技术可以在调用bean的构造函数时以编程方式获取组件?

jsf-2

12
推荐指数
1
解决办法
6万
查看次数

JSF按钮动作触发两次

我已经在WildFly论坛上问了这个问题,但到目前为止还没有得到任何答案.所以我在这里尝试.

自从我从WildFly 8.1升级到8.2后,我在连接到bean的tabView中遇到了一个commandButton问题.

这是一个简单的JSF页面:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head></h:head>
    <h:body>
        <h:form>
            <p:tabView binding="#{testBean.tabView}">
                <p:tab title="Tab">
                    <p:commandButton value="Inside" action="#{testBean.testInside}"/>
                </p:tab>
            </p:tabView>
            <p:commandButton value="Outside" action="#{testBean.testOutside}"/>
        </h:form>
    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

和豆:

@Named
@SessionScoped
public class TestBean implements Serializable {
    private TabView tabView = new TabView();

    public TabView getTabView() {
        return tabView;
    }

    public void setTabView(TabView tabView) {
        this.tabView = tabView;
    }

    public void testInside() {
        System.out.println("inside");
    }

    public void testOutside() {
        System.out.println("outside");
    }
}
Run Code Online (Sandbox Code Playgroud)

单击"内部"按钮会触发testInside() 两次."外部"按钮(tabView外部)表现正常,只触发一次方法.删除tabView绑定可以消除此问题.我正在使用PrimeFaces 4.0. …

jsf primefaces wildfly

5
推荐指数
1
解决办法
2660
查看次数

标签 统计

jsf ×4

binding ×3

components ×3

jsf-2 ×2

duplicates ×1

primefaces ×1

wildfly ×1