支持Bean未获取javascript发送的值

支持Bean未获取javascript发送的值,java,javascript,jsf,facelets,managed-bean,Java,Javascript,Jsf,Facelets,Managed Bean,我有三个下拉列表,其值通过以下JavaScript函数复制到组件: function getBirthDate() { var months = document.getElementById("months") var hidden1 = document.getElementById("formsignup:monthField"); hidden1.value = months.options[months.selectedIndex].text; var

我有三个下拉列表,其值通过以下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 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()" />
但它们在支持bean中以null的形式到达。这是如何造成的,我如何解决

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

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


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

您可以使用alert语句检查对象是否存在。范例

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

如果对象值为null,则指定的获取元素的Id不正确。。还要检查从对象获取的值。。我认为这可能会有所帮助

您确定已将正确更改的值发送到服务器吗?检查webbrowser的开发者工具集中的HTTP流量。确保您的s在您的内部并且getBirthDate方法有效,您可以使用console测试每个过程。使用firebug登录Firefox,或通过按Ctrl+Shift+J使用Chrome控制台登录Chrome。关于ID,JSF将通过以下形式更改组件的ID:,例如,在myInputText的id中将是myForm:myInputText,如果您的JSF组件位于表单之外,例如,myInputText id将是myInputText,因为它不在容器内。感谢luiggi的回答,但我当然意识到这一点,这就是为什么我在javascript中使用这种id。