【问题标题】:orderlist is not working in PrimeFaces 3.5订单列表在 PrimeFaces 3.5 中不起作用
【发布时间】:2015-01-29 11:36:27
【问题描述】:

我正在使用 PrimeFaces 3.5。我想在我的页面上使用 orderList。以下是我的 bean 类。

package test;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;

@ManagedBean
public class OrderListView {

    @ManagedProperty("#{themeService}")
    private List<String> cities;

    @PostConstruct
    public void init() {
        //Cities
        cities = new ArrayList<String>();
        cities.add("San Francisco");
        cities.add("London");
        cities.add("Paris");
        cities.add("Istanbul");
        cities.add("Berlin");
        cities.add("Barcelona");
        cities.add("Rome");
        //Themes
    }

    public List<String> getCities() {
        return cities;
    }

    public void setCities(List<String> cities) {
        this.cities = cities;
    }

    public void onSelect(SelectEvent event) {}
    public void onUnselect(UnselectEvent event) {}
    public void onReorder() {} 
} 

这是我的页面内容。

 <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:p="http://primefaces.org/ui"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:ui="http://java.sun.com/jsf/facelets" 
   xmlns:c = "http://java.sun.com/jsp/jstl/core">
<h:body>
   <h:form >
   <p:panel>
      <p:orderList value="#{orderListView.cities}" var="city" controlsLocation="none" itemLabel="#{city}" itemValue="#{city}" />
   </p:panel>
   </h:form>
</h:body>
</html>

我对此有所例外。

java.lang.NullPointerException
at org.primefaces.component.orderlist.OrderListRenderer.encodeOptions(OrderListRenderer.java:150)
at org.primefaces.component.orderlist.OrderListRenderer.encodeList(OrderListRenderer.java:109)
at org.primefaces.component.orderlist.OrderListRenderer.encodeMarkup(OrderListRenderer.java:80)
at org.primefaces.component.orderlist.OrderListRenderer.encodeEnd(OrderListRenderer.java:50)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:63)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
at 

我已经从 PrimeFaces 展示中尝试过这个示例,但它仍然无法正常工作。 谁能告诉我出了什么问题?

【问题讨论】:

  • 您是否在旧版 JSF 1.2 上运行 PrimeFaces 3.5?自 PrimeFaces 2 see 以来,已放弃对 JSF 1.2 的支持。您至少需要 JSF 2.x。
  • 对不起,我使用的是 jsf 2.0
  • 我尝试在其他类的构造函数中初始化列表,该类在启动时初始化仍然给出相同的异常
  • 为什么cities 上有一个@ManagedProperty

标签: jsf jsf-2 primefaces


【解决方案1】:

抛出的空指针异常表明城市列表或 bean 为空。尝试调试代码以查看 init() 方法是否实际触发。

我不知道您使用的是什么服务器,但重新启动可能有助于注册新创建的托管 bean。

编辑 1:

您能否尝试从列表上方删除@ManagedProperty("#{themeService}") 并重试?

【讨论】:

  • 嗨,Emil Kaminski,我在 init() 中添加了断点,它进入 init 并且列表包含所有城市。
  • 我在渲染页面时遇到了这个异常
  • 谢谢@Emil Kaminski,我已经删除了@ManagedProperty("#{themeService}"),它的工作原理。
  • 不客气,请选择此作为已接受的答案,以便我们“关闭”此问题
  • 这里似乎有很多猜测;这可能作为评论更有用
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2013-05-25
  • 2013-03-10
  • 2013-03-07
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
相关资源
最近更新 更多