【问题标题】:Cannot get custom component attribute from backing bean无法从支持 bean 获取自定义组件属性
【发布时间】:2015-08-04 22:09:35
【问题描述】:

我有以下自定义 PrimeFaces 面板

在页面中

<x:myPanel panelName="TEST123" />

还有班级

    @FacesComponent(namespace="test",tagName="myPanel", createTag=true)
    public class MyPanel extends Panel {

    public MyPanel() {
           panelName = (String)getAttributes().get("panelName");
    }
}

为什么从类本身获取属性时不起作用

getAttributes().get("panelName");  >> it returns null

我什至也尝试使用以下内容,它还在类中返回 null:

<f:attribute name="panelName" value="TEST123"/>

提前致谢

【问题讨论】:

    标签: jsf primefaces custom-component


    【解决方案1】:

    基本上,JSF 在幕后创建组件并设置属性如下:

    MyPanel myPanel = new MyPanel();
    myPanel.getAttributes().put("panelName", "TEST123");
    

    不言而喻,在构造组件之前不可能设置它的属性。但是,您正试图在构造函数中访问它!

    您应该在您实际需要它的标准UIComponent 方法之一中访问它。例如。 encodeBegin() 左右。

    【讨论】:

    • 我现在明白了,这是有道理的。非常感谢 Balus 也感谢您的解释。它工作:) 谢谢。
    • 嗨,Balus,作为我正在尝试做的事情的延续,您的建议已经奏效,但我发现了一个与之相关的不同问题,请您检查一下:
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2012-04-01
    • 2011-06-29
    • 2012-06-19
    • 2015-02-26
    • 1970-01-01
    • 2021-10-17
    • 2011-10-15
    相关资源
    最近更新 更多