Ajax jsf selectOneMenu奇怪项值
在我的应用程序中,我选择了一个菜单来选择月份Ajax jsf selectOneMenu奇怪项值,ajax,jakarta-ee,web-applications,jsf-2,selectonemenu,Ajax,Jakarta Ee,Web Applications,Jsf 2,Selectonemenu,在我的应用程序中,我选择了一个菜单来选择月份 <h:selectOneMenu value="#{register.monthOfBirth}"> <f:selectItems value="#{register.dateValues.monthsList}" var="month" itemLabel="#{month.valueLabel}" itemValue="#{month.val
<h:selectOneMenu value="#{register.monthOfBirth}">
<f:selectItems value="#{register.dateValues.monthsList}" var="month" itemLabel="#{month.valueLabel}" itemValue="#{month.valueValue}"/>
<f:ajax listener="#{register.monthChanged}" render="messages" />
</h:selectOneMenu>
我在输出中得到的是:
"INFO: New month is month number dyplom.dyplom.date.DateValues$Values@79f6099"
而不是(例如)2(月数,所以是2月)
我做错了什么
编辑:
生成的HTML:
<h2><select id="j_idt56:j_idt70" name="j_idt56:j_idt70" size="1" onchange="mojarra.ab(this,event,'valueChange',0,'j_idt56:messages')"> <option value="dyplom.dyplom.date.DateValues$Values@32b0c37e">1</option>
<option value="dyplom.dyplom.date.DateValues$Values@72f29f31">2</option>
<option value="dyplom.dyplom.date.DateValues$Values@16b184ec">3</option>
<option value="dyplom.dyplom.date.DateValues$Values@608dad97">4</option>
<option value="dyplom.dyplom.date.DateValues$Values@757fc606">5</option>
<option value="dyplom.dyplom.date.DateValues$Values@17a1f02e">6</option>
<option value="dyplom.dyplom.date.DateValues$Values@89f6821">7</option>
<option value="dyplom.dyplom.date.DateValues$Values@196d52f3">8</option>
<option value="dyplom.dyplom.date.DateValues$Values@5860dc8f">9</option>
<option value="dyplom.dyplom.date.DateValues$Values@3f305d9d">10</option>
<option value="dyplom.dyplom.date.DateValues$Values@520ed4">11</option>
<option value="dyplom.dyplom.date.DateValues$Values@b4b8076">12</option>
</select>
</h2>
1
2.
3.
4.
5.
6.
7.
8.
9
10
11
12
问题已解决我为我犯的错误感到羞愧! 看看
值的构造函数
:
public Values(String valueLabel, String valueValue){
this.valueLabel = valueValue;
this.valueLabel = valueValue;
}
正如您所看到的,我用错误的变量设置了两次valueLabel,而且我根本没有设置valueValue
现在,正如我纠正的那样:
public Values(String valueLabel, String valueValue){
this.valueLabel = valueLabel;
this.valueValue = valueValue;
}
一切都好:)
抱歉弄得一团糟 问题解决了我为我犯的错误感到羞愧! 看看
值的构造函数
:
public Values(String valueLabel, String valueValue){
this.valueLabel = valueValue;
this.valueLabel = valueValue;
}
正如您所看到的,我用错误的变量设置了两次valueLabel,而且我根本没有设置valueValue
现在,正如我纠正的那样:
public Values(String valueLabel, String valueValue){
this.valueLabel = valueLabel;
this.valueValue = valueValue;
}
一切都好:)
抱歉弄得一团糟 你能展示整个代码吗?其中的变量名为
monthOfBirth
?您的itemValue
类型为String
,因此monthOfBirth
应为String
。是否正确执行值
到String()。因为这里的问题是,您正在尝试将对象打印为字符串,如果您没有重写toString()
,则会得到默认结果(即显示的结果)。@SJuan76我是否只需要在“值”中重写toString()?或者我应该实现一个转换器?我希望当selectOneMenu的“itemValue”和“value”都是同一类型(字符串)时,不需要任何其他操作。您确定{register.monthOfBirth}
是字符串吗?我假设它是一个值;如果是字符串,我希望它可以正常工作。在这种情况下,您是否可以检查生成的HTML以查找其中使用了哪些值?您确定正在运行您认为正在运行的代码?重建/重新部署/重新启动以确保。您能显示整个代码吗?其中的变量名为monthOfBirth
?您的itemValue
类型为String
,因此monthOfBirth
应为String
。是否正确执行值
到String()
。因为这里的问题是,您正在尝试将对象打印为字符串,如果您没有重写toString()
,则会得到默认结果(即显示的结果)。@SJuan76我是否只需要在“值”中重写toString()?或者我应该实现一个转换器?我希望当selectOneMenu的“itemValue”和“value”都是同一类型(字符串)时,不需要任何其他操作。您确定{register.monthOfBirth}
是字符串吗?我假设它是一个值;如果是字符串,我希望它可以正常工作。在这种情况下,您是否可以检查生成的HTML以查找其中使用了哪些值?您确定正在运行您认为正在运行的代码?重建/重新部署/重新启动以确保安全。