【发布时间】:2012-01-23 08:58:17
【问题描述】:
我在 JSF 2 应用程序中使用 selectOneMenu 来允许用户选择一个月中的一天。出于某种原因,我无法显示“选择日期”标签。这就是我正在做的事情:
<h:selectOneMenu id="startDay" value="#{bean.day}">
<f:selectItem itemLabel="Select Day" itemValue=""/>
<f:selectItems value="#{bean.days}"/>
</h:selectOneMenu>
bean中的代码是这样的:
private int day;
private List<Integer>days;
我在 @PostConstruct 初始化方法中实例化:
days = new LinkedList<Integer>();
for(int i=1; i<=31; i++) {
days.add(i);
}
一切正常,但值显示在“1”而不是“选择日期”中。我在上面的标签上尝试了不同的变体,但没有任何效果。我错过了什么?
编辑:我也有一个类似的小部件显示年份,它以相同的方式初始化,但循环从 2012 年开始。像这样:
years = new LinkedList<Integer>();
for(int i=2012; i<=2020; i++) {
years.add(i);
}
这工作正常,按预期显示“选择年份”。那么从 1 开始的实例化循环是否存在问题?如果是这样,解决方法是什么?
【问题讨论】:
-
似乎是您使用的 primefaces 版本中的一个错误,尝试使用稳定版本或更新版本...因为它应该可以工作 primefaces.org/showcase/ui/selectOneMenu.jsf
-
您使用的是哪个版本的 JSF 和服务器?我尝试使用 JSF 2.1(2.1.1.FCS) 和 Tomcat 7,它将第一个值显示为 'Select Day'。@Daniel 你怎么断定它是 primefaces?
-
user458248 我正在使用 myfaces 2.1.4 和 tomcat 7。Daniel,这不是这个页面上的 primefaces。我正在更新问题以添加一些信息。
-
我无法在 MyFaces 2.1.4 和 Mojarra 2.1.4 中重现您的问题。您确定
day不只是在某处预初始化为1吗? -
完全不确定...事实上这就是问题所在。再次感谢您,BalusC! (我之所以这样,是因为我同时使用该页面进行编辑和进入新的拍卖,并且我想确保在返回页面进入新的拍卖时,一旦编辑了另一个拍卖,我们会删除编辑了拍卖的价值。但除此之外,我会弄清楚如何处理它。)
标签: jsf-2 selectonemenu