4

我的 jsf 页面中有这一行

<h:dataTable value="#{customer.getCustomerList()}"

在我的豆子里,我有

public List<Customer> getCustomerList(){
        return customerBo.findAllCustomer();
    }

我正在将 JSF 2.0 与 Eclipse Helios 与 servlet 2.5 一起使用,当我验证时我得到了

Expression must be a value expression but is a method expression

我该如何解决这个问题?

4

2 回答 2

15

我有一个类似的问题,尽管事实上我做得对,就像 PermGenError 发布的那样。我有这个:

<h:commandButton action="#{bean.registry}"></h:commandButton>

我得到了错误:表达式必须是一个方法表达式,但它是一个值表达式

在我的 Bean 中,有:

class Bean{

    Registry registry = new Registry();

    public Registry getRegistry() {
        return registry;
    }
}

此消息的原因是 Eclipse 无法识别这实际上是以 JSF 方式调用的方法,并且将此消息视为错误。这可以通过这种方式关闭:

窗口/首选项/Web/JavaServer Faces 工具/验证/类型分配问题/预期方法表达式

更改为警告忽略

我希望这会对某人有所帮助!

于 2014-09-26T09:50:00.413 回答
2

看法:

<h:dataTable value="#{customer.customerList}"

您的value属性h:dataTable需要一个值表达式,而不是方法表达式。您必须创建一个customerList#{customer}托管 bean 中调用的属性。

@ManagedBean(name="customer")
public class Customer implements Serializable {
    private List<Customer> custormerList= new ArrayList<Customer>();

    public void setCustomerList(List<Customer> cust){
       this.customerList = cust;
    }
    public List<Customer> getCustomerList(){
        return customerBo.findAllCustomer();
    }
}

参考 h:dataTable 标签文档

于 2012-11-24T09:29:47.877 回答