gpt4 book ai didi

jsf - 在 EL 中动态调用方法,该方法是从 String 评估的

转载 作者:行者123 更新时间:2023-12-04 23:18:42 24 4
gpt4 key购买 nike

我有一个提交按钮。这个提交按钮有一个“action”属性。但是这个 Action 属性应该总是调用另一个函数(某种通用的)。所以我想动态调用一个函数。这是因为我需要重用这个组件。我只是不知道操作属性需要哪种类型(方法、字符串等?)以及如何正确引用想要的“BeanWithMethodToCall”。

@Named
@SessionScoped
public class BeanWithMethodToCall{

@Inject
private BeanWhichIsCalledFromEL elBean;

public void methodToCall(){
//do something
}

public void someLogic(){
// here the wanted method is set on the bean which is later on called from el
elBean.setMethodToCall("methodToCall");
}
}

@Named
@SessionScoped
public class BeanWhichIsCalledFromEL{

// i don't know the correct type of this :S
private String method;

public void setMethodToCall(String method){
this.method = method;
}

// i don't know the correct return type of this :S
public String getMethodToExecute(){
//this method is called in the action attribute in the xhtml
// and should return a dynamic function to call
}

}

在 EL:
<h:commandButton value="Cancel" action="#{beanWhichIsCalledFromEL.getMethodToExecute()}">
<f:ajax render="@form"/>
</h:commandButton>

这看起来很棘手..我希望有人能帮助我。我需要反射(reflection)吗?或 EL 解析器或其他任何东西?

最佳答案

使用大括号表示法 #{bean[foo]}评估“动态”方法和属性名称。

您的具体情况可以如下解决:

<h:commandButton ... action="#{bean[bean.methodToExecute]}">

也可以看看:
  • Dynamic ui include and commandButton
  • 关于jsf - 在 EL 中动态调用方法,该方法是从 String 评估的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239644/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com