sfr*_*frj 6 java jsf el java-ee jsf-2
关于我在EL中调用方法的方式,我有几个问题.也许有人可以解释它是如何运作的.
我做了这个非常简单的例子:
的index.xhtml
<h:body>
<!-- Using a method -->
#{bba.salute()}
<br/>
<h:outputText value="#{bba.salute()}"/>
<br/>
<!-- Using a method from an injected bean-->
#{bba.b.doSomething()}
</h:body>
Run Code Online (Sandbox Code Playgroud)
BackBeanA.java
@Named("bba")
@SessionScoped
public class BackBeanA implements Serializable {
private static final long serialVersionUID = 5671761649767605303L;
@Inject
private BackBeanB b;
public String salute() {
return "Hi! I am 'A'";
}
public BackBeanB getB() {
return b;
}
public void setB(BackBeanB b) {
this.b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
BackBeanB.java
@Named("bbb")
@SessionScoped
public class BackBeanB implements Serializable {
private static final long serialVersionUID = -4786092545430477941L;
public String doSomething() {
System.out.println("Hello!!!");
return "I am a SessionScopped Backing Bean, my name is 'B' and i am doing something";
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
当我从一个支持bean调用一个方法时,我什么时候需要使用方括号(),当我不需要时?示例:如果我从中删除括号#{bba.salute()}
,我会收到一条错误,说明(找不到名为'敬礼'的属性)
我还想学习如何从注入的bean调用方法.我在BackBeanA中注入了BackBeanB,但是当我#{bba.salute()}
在页面中说,我没有看到方法中的消息BackBeanB
.这是为什么?注入的bean不需要在@PostConstruct
右边初始化?注入豆的吸气剂和固定剂是否足够?
请注意我说的行<h:outputText value="#{bba.salute()}"/>
,它可以工作,但是eclipse会显示如下警告:
这是为什么?
Rom*_*las 25
当你写作时#{myBean.salute}
,JSF正在寻找这个属性 salute
.在Java代码中,它被"翻译"为myBean.getSalute();
.换句话说,你必须为这个属性提供getter(如果这个属性可以被JSF修改,例如在输入字段中使用它时,最终需要提供setter).
当你写作时,#{myBean.salute()}
你指的是方法 salute()
.
规则很简单:当你想要做一个动作时使用一个方法(即通常它将在一个action
或actionListener
属性中定义).在其他情况下,使用财产.在您的示例中,您希望在页面中显示一些文本,因此请调用#{myBean.salute()}
,然后调用#{myBean.salute}
.
对于第二点,尝试更改代码以访问属性something
而不是方法:
<!-- Using a method from an injected bean-->
#{bba.b.something}
Run Code Online (Sandbox Code Playgroud)
并在BeanB
代码中:
public String getSomething() {
System.out.println("Hello!!!");
return "I am a SessionScopped Backing Bean, my name is 'B' and i am doing something";
}
Run Code Online (Sandbox Code Playgroud)
关于你的最后一点,我认为你的Eclipse根本不处理EL 2.0语法.
归档时间: |
|
查看次数: |
37760 次 |
最近记录: |