【问题标题】:p:selectOneMenu Problem?p:selectOneMenu 有问题吗?
【发布时间】:2011-10-31 18:44:09
【问题描述】:

以下代码适用于h:selectOneMenu,但不适用于p:selectOneMenu

p:selectOneMenu中没有项目

小脸

<?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:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core">
  <h:head>
    <title>Facelet Title</title>
  </h:head>
  <h:body>
    <h:form>
      <h:selectOneMenu value="#{testBean.name}">
        <f:selectItems value="#{testBean.names}"/>
      </h:selectOneMenu>

      <p:selectOneMenu value="#{testBean.name}">
        <f:selectItems value="#{testBean.names}"/>
      </p:selectOneMenu>
    </h:form>
  </h:body>
</html>

豆子

package net.footfeed.beans;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class TestBean {

  private String name = "name1";
  private String[] names = new String[] {"name1", "name2", "name2"};

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String[] getNames() {
    return names;
  }

}

【问题讨论】:

  • 正如 BalusC 所说,您应该向他们报告,因为这显然是 PrimeFaces 中的一个错误(或者在他们的论坛上询问,他们会很快回答)。如果您正在从事任何严肃的项目,我可以建议您远离 PF3.0。我已经使用它几个月了,我不得不说现在为他们准备生产还为时过早。另一方面,他们仍处于测试阶段,所以难怪!另外,不想得罪任何人,但我下载了他们的源代码,质量还有很多不足之处......

标签: jsf jsf-2 primefaces selectonemenu


【解决方案1】:

很好奇,它不支持&lt;f:selectItems&gt; 上的List&lt;T&gt;T[]。您需要创建一个List&lt;SelectItem&gt;SelectItem[],或者更好地明确指定var 属性。这仅适用于 List&lt;T&gt;

<f:selectItems value="#{bean.names}" var="name" itemValue="#{name}" itemLabel="#{name}" />

private List<String> names = Arrays.asList("name1", "name2", "name3");

由于这毫无意义,我建议将此问题报告给他们的问题跟踪器。

更奇怪的是,当我省略 itemLabel(然后应该只显示 itemValue 作为标签)时,它会在 Tomcat 上引发非常严重的 NPE:

java.lang.NullPointerException
    at org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:182)
    at com.sun.faces.application.view.WriteBehindStateWriter.write(WriteBehindStateWriter.java:127)
    at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:666)
    at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:261)

PrimeFaces 3.0 显然仍处于测试阶段。

【讨论】:

  • 我试过指定`var`,但没有成功!我需要检查ListItem[],顺便说一下已经报告了。
  • 你最喜欢的 JSF 2.0 的 AJAX 库是什么?
  • 哦,我在测试 bean 中使用了List&lt;T&gt;,它确实不适用于T[]!我更新了答案。
  • 我还没有真正喜欢的组件库。我只是看看我现在需要什么以及现在提供最好的组件库:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多