1

我有三个下拉列表,其值<h:inputHidden>通过以下 JavaScript 函数复制到组件中:

function getBirthDate() {
    var months = document.getElementById("months")
    var hidden1 =  document.getElementById("formsignup:monthField");
    hidden1.value = months.options[months.selectedIndex].text;
    var days = document.getElementById("days");
    var hidden2 = document.getElementById("formsignup:dayField");
    hidden2.value = days.options[days.selectedIndex].value;
    var years = document.getElementById("years");
    var hidden3 = document.getElementById("formsignup:yearField");
    hidden3.value = years.options[years.selectedIndex].value;
}

以下是三个<h:inputHidden>组件:

<h:inputHidden value="#{signupBean.month}" id="monthField"/>
<h:inputHidden value="#{signupBean.day}" id="dayField"/>
<h:inputHidden value="#{signupBean.year}" id="yearField"/>

这是一个命令按钮,它应该调用将值复制到输入然后将它们提交给支持 bean 的函数。

<h:commandButton image="images/images/signup1.png" 
     styleClass="joinnow" 
     id="joinus" action="#{signupBean.save}"
     onclick="getBirthDate()" />

但它们就像null在支持 bean 中一样到达。这是如何引起的,我该如何解决?

编辑:当我尝试从 JSF 组件中选择元素时,jQuery 冻结。元素的 ID 有问题吗?

编辑:下面是与 HTTP 请求一起发送的变量的屏幕截图,证明这些值已正确发送。豆子会有什么问题?

在此处输入图像描述

4

2 回答 2

0

你能检查你的bean的范围,如果它在你的提交过程中被重新初始化。在这种情况下,无论这些值是否是从客户端发送的,隐藏字段都会获得它的初始值。

于 2012-08-21T18:41:06.270 回答
0

您可以使用警报语句检查对象是否存在。例子

function getBirthDate() {
var months = document.getElementById("months")
var hidden1 =  document.getElementById("formsignup:monthField");
alert(months);alert(months.value);
alert(hidden1);alert(hidden1.value);

如果 Object 值为 null,则您为获取元素而提供的 Id 不正确..还要检查您从对象中获得的值..我认为这可能会有所帮助

于 2013-12-11T07:10:58.730 回答