小编典典

如何在getter方法中获取调用组件的ID?

java

给出以下示例:

<h:inputText id="foo" size="#{configBean.size}" />

我想在getter方法中获取id调用组件的foo,以便可以通过键从属性文件返回大小foo.length

public int getSize() {
    String componentId = "foo"; // Hardcoded, but I should be able to get the id somehow
    int size = variableConfig.getSizeFor(componentId);
    return size;
}

我该如何实现?


阅读 182

收藏
2020-11-26

共1个答案

小编典典

从JSF
2.0开始,组件范围中有了一个新的隐式EL变量:#{component}它引用当前UIComponent实例。在其getter方法中getId(),您需要一种。

因此,您可以执行以下操作:

<h:inputText id="foo" size="#{configBean.getSize(component.id)}" />

public int getSize(String componentId) {
    return variableConfig.getSizeFor(componentId);
}

另外,您也可以制作variableConfig一个,@ApplicationScoped @ManagedBean以便执行以下操作:

<h:inputText id="foo" size="#{variableConfig.getSizeFor(component.id)}" />

(每当您想将参数传递给方法时,都必须在EL中使用完整的方法名称而不是属性名称,因此variableConfig.sizeFor(component.id)将无法使用,或者您必须在类中将实际getSizeFor()方法重命名为sizeFor()

2020-11-26