Java JSF2:在EL表达式中传递方法
是否可以在EL表达式中传递方法 我有一个bean和两个视图。第二个视图有一个按钮,但按钮触发的方法应由第一个视图定义。因此,当我从第一个视图链接时,我必须告诉第二个视图方法 我想象这样的情况: 第一视图:Java JSF2:在EL表达式中传递方法,java,jsf-2,el,Java,Jsf 2,El,是否可以在EL表达式中传递方法 我有一个bean和两个视图。第二个视图有一个按钮,但按钮触发的方法应由第一个视图定义。因此,当我从第一个视图链接时,我必须告诉第二个视图方法 我想象这样的情况: 第一视图: 第二种观点: 是的,这是可能的。以下是操作属性的说明: MethodExpression,表示在 此组件由用户激活。表达式必须求值 指向不接受参数并返回对象的公共方法 (调用其toString()以派生逻辑结果) 将传递给此应用程序的NavigationHandler 是的,有可能。以下是
第二种观点:
是的,这是可能的。以下是
操作
属性的说明:
MethodExpression,表示在
此组件由用户激活。表达式必须求值
指向不接受参数并返回对象的公共方法
(调用其toString()以派生逻辑结果)
将传递给此应用程序的NavigationHandler
是的,有可能。以下是
操作
属性的说明:
MethodExpression,表示在
此组件由用户激活。表达式必须求值
指向不接受参数并返回对象的公共方法
(调用其toString()以派生逻辑结果)
将传递给此应用程序的NavigationHandler
我认为在JSF中没有这样做的方法。我的建议是让来自第一个视图的调用在backingbean中选择一个委托,当单击来自第二个视图的操作时调用该委托 像这样的
public class Bean {
public interface Delegate {
void doSomething();
}
public class MethodADelegate implements Delegate {
public void doSomething() {
}
}
public class MethodBDelegate implements Delegate {
public void doSomething() {
}
}
private Delegate delegate;
public String methodA() {
this.delegate = new MethodADelegate();
return "view2";
}
public String methodB() {
this.delegate = new MethodBDelegate();
return "view2";
}
public String view2Call() {
delegate.doSomething();
return "done";
}
}
<h:commandLink action="#{bean.methodA}" value="Second view with method A" />
<h:commandLink action="#{bean.methodB}" value="Second view with method B" />
<h:commandButton action="#{bean.view2Call}" value="Call the method" />
公共类Bean{
公共接口委托{
无效剂量();
}
公共类MethodeLegate实现委托{
公共无效剂量测定法(){
}
}
公共类MethodBDelegate实现委托{
公共无效剂量测定法(){
}
}
私人代表;
公共字符串methodA(){
this.delegate=newmethodedelegate();
返回“view2”;
}
公共字符串方法B(){
this.delegate=new MethodBDelegate();
返回“view2”;
}
公共字符串view2Call(){
delegate.doSomething();
返回“完成”;
}
}
我认为在JSF中没有办法做到这一点。我的建议是让来自第一个视图的调用在backingbean中选择一个委托,当单击来自第二个视图的操作时调用该委托
像这样的
public class Bean {
public interface Delegate {
void doSomething();
}
public class MethodADelegate implements Delegate {
public void doSomething() {
}
}
public class MethodBDelegate implements Delegate {
public void doSomething() {
}
}
private Delegate delegate;
public String methodA() {
this.delegate = new MethodADelegate();
return "view2";
}
public String methodB() {
this.delegate = new MethodBDelegate();
return "view2";
}
public String view2Call() {
delegate.doSomething();
return "done";
}
}
<h:commandLink action="#{bean.methodA}" value="Second view with method A" />
<h:commandLink action="#{bean.methodB}" value="Second view with method B" />
<h:commandButton action="#{bean.view2Call}" value="Call the method" />
公共类Bean{
公共接口委托{
无效剂量();
}
公共类MethodeLegate实现委托{
公共无效剂量测定法(){
}
}
公共类MethodBDelegate实现委托{
公共无效剂量测定法(){
}
}
私人代表;
公共字符串methodA(){
this.delegate=newmethodedelegate();
返回“view2”;
}
公共字符串方法B(){
this.delegate=new MethodBDelegate();
返回“view2”;
}
公共字符串view2Call(){
delegate.doSomething();
返回“完成”;
}
}
不,那是不可能的。但是,您可以使用大括号符号[]
调用动态bean方法
与
如果bean也需要是动态的,那么必须单独传递bean名称并了解其范围
与
不,那是不可能的。但是,您可以使用大括号符号
[]
调用动态bean方法
与
如果bean也需要是动态的,那么必须单独传递bean名称并了解其范围
与
非常感谢,但这不是我想要的。我知道,我可以调用一个方法并在action方法中返回导航结果。我想知道的是如何将一个方法作为新视图(或bean)的参数。非常感谢,但这并不是我想要的。我知道,我可以调用一个方法并在action方法中返回导航结果。我想知道的是如何将方法作为新视图(或bean)的参数。